所以我的ng-repeat指令有问题。在我的代码中,我有一个父控制器,它将数据存储为对象数组。
$scope.queue = [
{
name: 'Mark',
sex: 'Male',
age: 21
},
{...}
];
$scope.changePositionInQueue = function (currIndex, targetIndex) {
// move up / down person in queue
};
我想要做的是将父控制器的功能传递给我的指令(' person')隔离范围,同时能够使用' $ index',' $ first',' $ last'变量。
<person data-change-position="changePositionInQueue" data-person="person" ng-repeat="person in queue"></person>
指令范围声明:
scope: {
person: '=',
changePosition: '&'
}
问题在于,当我在ng-repeat循环中创建隔离范围时,我失去了ng-repeat属性。另一方面,当我通过ng-repeat创建默认范围并且我可以访问所有想要的属性时,我无法使用父函数。
答案 0 :(得分:0)
这是我对你挑战的解决方案:
在视图中:
<my-directive dir-func="fnc($index)" data="data" ng-repeat="data in datas"><span>{{data.id|json}}</span><br></my-directive>
在链接中直接调用父函数:
myApp.directive('myDirective', function() {
return {
//require: 'ngModle',
scope: {
data: "=",
dirFunc: "&"
},
link: function(scope, elem, attr, ngModel) {
scope.dirFunc() // parent scope.func is called here where you get the alert
}
}