AngularJS嵌套ng-repeat我如何从父控制器中引用子作用域?

埃德

我有这个template.html

<style>
.sel{ border:5px solid red; }
</style>
<div class="parent-loop" ng-repeat="(datekey,group) in grouped">
    <div class="child-loop" ng-repeat="event in group" side="right">
        <div ng-class="{sel: $index == selected}">
           <label class="date">{{datekey}}</label>
           <button ng-click="$parent.select($index)" class="bt-select">select</button>
        </div>
    </div>
</div>

和这个controller.js

$scope.events = [{id:event1-date1, startDate:12/3/16},{id:event2-date1, startDate:12/3/16},{id:event1-date2, startDate:22/4/16}];

// this is the result of $scope.events.reduce(...) 
$scope.grouped = {
    '12/3/16':[{id:event1-date1, startDate:12/3/16},'12/3/16':{id:event2-date1, startDate:12/3/16}],
    '22/4/16':[{id:event1-date2, startDate:22/4/16}]
};

// this is called from within an item inside the child loop
$scope.select = function(index){
    $scope.selected = index;
}

注意:在实际的应用程序中,$ parent实际上被称为其他名称,但在此示例中我进行了简化;该按钮可以正常工作并在控制器中调用该函数,因此请不要在意$ parent.select($ index)。

我的问题是:我想单击项目的bt-select按钮之一并应用.sel类-这可行;在此示例中,我有2个组,一组包含2个项目,另一组包含1个项目。因此,我们有2个项目的$ index = 1(在自己的父循环中建立索引),因此它们都获得了该类。因此,如何在select()函数中仅引用单击项的范围?我需要一种具有“全局索引”(或诸如此类)的方法,使我可以仅引用其中一个作用域。我设法通过一个丑陋的技巧做到了这一点,在该技巧中,我将父级和子级索引(字符串)和ng-init连接起来,然后只是在子级中检查该变量,但我认为应该有更好的方法。

任何人?谢谢!

阿塔尔·拉希姆·乔杜里(Ataur Ra​​him chowdhury)

这是一个工作版本:http : //jsfiddle.net/aLdxg715/

var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
    $scope.events = [
      {id:'event1-date1', startDate:'12/3/16'},
      {id:'event2-date1', startDate:'12/3/16'},
      {id:'event1-date2', startDate:'22/4/16'}
    ];

    $scope.grouped = {
        '12/3/16':[{id:'event1-date1', startDate:'12/3/16'},{id:'event2-date1', startDate:'12/3/16'}],
        '22/4/16':[{id:'event1-date2', startDate:'22/4/16'}]
    };

    $scope.select = function(index,groupIndex){
        $scope.selected = index;
        $scope.selectedGroup = groupIndex;
    }
}
.sel{ border:5px solid red; }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="MyCtrl">
  <div class="parent-loop" ng-repeat="(datekey,group) in grouped">
    <div class="child-loop" ng-repeat="event in group" side="right">
        <div ng-class="{sel: ($index == selected && datekey == selectedGroup)}">
           <label class="date">{{datekey}}</label>
           <button ng-click="select($index,datekey)" class="bt-select">select</button>
        </div>
    </div>
  </div>
</div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS。嵌套ng-repeat

来自分类Dev

嵌套的ng-repeat angularjs

来自分类Dev

我的AngularJS视图能够访问其控制器的作用域,但是ng-repeat不起作用

来自分类Dev

嵌套ng-repeat中来自控制器的AngularJS访问元素

来自分类Dev

在Angularjs中嵌套ng-repeat

来自分类Dev

Angularjs - ng-repeat 和嵌套作用域

来自分类Dev

在嵌套的Angularjs控制器中使用ng-model

来自分类Dev

AngularJS嵌套ng-repeat范围

来自分类Dev

AngularJS嵌套ng-repeat onclick

来自分类Dev

AngularJS,嵌套JSON和ng-repeat

来自分类Dev

angularjs从父级更改ng-repeat嵌套值

来自分类Dev

如何从ng-repeat内的指令访问控制器作用域?

来自分类Dev

ng-repeat中丢失控制器作用域

来自分类Dev

ng-repeat中丢失控制器作用域

来自分类Dev

AngularJS-如何访问嵌套的ng-repeat中的数组

来自分类Dev

ng-repeat中的角嵌套控制器

来自分类Dev

AngularJS双嵌套ng-repeat不起作用

来自分类Dev

AngularJS:在控制器中初始化嵌套作用域变量

来自分类Dev

Angular ng-repeat在子控制器中不起作用

来自分类Dev

计算嵌套ng重复的总数并更新angularjs中的多个控制器/模型

来自分类Dev

计算嵌套ng重复的总数并更新angularjs中的多个控制器/模型

来自分类Dev

带有ng-repeat的AngularJS中的嵌套注释

来自分类Dev

未选中嵌套ng-repeat中的Angularjs单选按钮

来自分类Dev

AngularJS嵌套数组中的ng-repeat

来自分类Dev

AngularJS:在嵌套的ng-repeat中迭代时计数

来自分类Dev

在AngularJS中对嵌套ng-repeat的元素进行排序

来自分类Dev

嵌套的json中的angularjs ng-repeat下拉菜单

来自分类Dev

在angularjs中嵌套ng-mouseover不起作用

来自分类Dev

在AngularJs中,如何确定在页面中多次使用的控制器中的特定作用域?

Related 相关文章

热门标签

归档