小编Ste*_*eve的帖子

AngularJS:在ng-repeat生成的范围中设置变量

如何访问ng-repeat生成的范围集?

我认为这个问题的核心是我不明白这种关系如何在a)传递给ng-repeat指令的对象集合和b)它生成的作用域集合之间起作用.我可以玩(a),ng-repeat范围观察和拾取,但我如何设置范围本身的变量(b)?

我的用例是我有一组使用ng-repeat重复的元素,每个元素都有一个使用ng-show/ng-hide切换的编辑视图; 每个元素的状态保存在本地范围的变量中.我希望能够在特定元素上触发ng-show,但是我希望从ng-repeat 外部调用触发器,因此我需要能够访问本地范围变量.

任何人都可以指出我正确的方向(或告诉我,如果我正在吠叫错误的树)?

谢谢

更新: 下面的链接非常有用,谢天谢地.最后,我为每个重复元素创建了一个指令,并使用该指令的link函数将其作用域添加到根作用域的集合中.

angularjs angularjs-scope angularjs-ng-repeat

16
推荐指数
3
解决办法
3万
查看次数

当通过templateUrl加载指令模板时,ng-repeat不绑定

我被困在这几个小时和几个小时 - 有人可以帮忙吗?

我有一个嵌套指令列表,我正在通过ng-repeat迭代.这些指令的模板相当厚实,所以我将它们模块化为单独的HTML文件并通过templateUrl加载它们,但这似乎打破了数据绑定.

我在这里复制了这个问题:http: //plnkr.co/edit/72HUb0vhtpYWuRHnlq3b?p=preview

HTML:

<div project-ext ng-repeat="project in projects"></div>
Run Code Online (Sandbox Code Playgroud)

project.html

{{project.name}} <button ng-click="projects.splice($index,1)">-</button><br>
<div schedule-ext ng-repeat="schedule in project.schedules"></div>
Run Code Online (Sandbox Code Playgroud)

schedule.html

{{schedule.name}}<button ng-click="remove($index)">-</button>
Run Code Online (Sandbox Code Playgroud)

JS:

app.directive('projectExt', function() {
    return { 
        templateUrl: 'project.html'
    };
});

app.directive('scheduleExt', function() {
    return { 
        templateUrl: 'schedule.html',
        link: function(scope) {
            scope.remove = function(i) {
                scope.$parent.project.schedules.splice(i,1)
            };
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么删除按钮在第二个列表中不起作用,当我所做的只是将指令构造从模板更改为templateUrl?

angularjs angularjs-directive angularjs-ng-repeat

1
推荐指数
1
解决办法
2762
查看次数