在嵌套指令中绑定函数时,1.4更新似乎引入了一个问题。我有一个示例plunker:http://plnkr.co/edit/fQLY0N8BTNs38VC8ikll
代码:
var app = angular.module('myApp', []);
app.controller('myCtrl', function(){
this.searchFunction = function(term) {
console.log('you searched for ' + term);
}
});
app.directive('outerDirective', function(){
return {
restrict: 'E',
scope: {
outer: '&'
},
template: '<inner-directive inner="cx.outer(term)"></inner-directive>',
controller: function(){
},
controllerAs: 'cx',
bindToController: true
};
});
app.directive('innerDirective', function(){
return {
restrict: 'E',
scope: {
inner: '&'
},
template: '<a ng-click="cx.execute()">Click</a>',
controller: function(){
this.execute = function(){
this.inner('fred');
}
},
controllerAs: 'cx',
bindToController: true
};
});
这在1.3中工作但是我在1.4中有一些新的方法吗?
点击该链接,您将在控制台中看到以下错误:
TypeError:不能使用'in'运算符在fred中搜索'cx' at fn(eval at(https://code.angularjs.org/1.4.0/angular.js:13036:15),:2:54) 在目的地。(匿名函数)[作为内部](https://code.angularjs.org/1.4.0/angular.js:8689:22) 执行时(http://run.plnkr.co/zE9xlCQNMBrOZZgi/script.js:35:14) at fn(eval at(https://code.angularjs.org/1.4.0/angular.js:13036:15),:2:237) 在回调(https://code.angularjs.org/1.4.0/angular.js:23090:17) 在范围。$ eval(https://code.angularjs.org/1.4.0/angular.js:15719:28) 在Scope。$ apply(https://code.angularjs.org/1.4.0/angular.js:15818:23) 在HTMLAnchorElement。 (https://code.angularjs.org/1.4.0/angular.js:23095:23) 在HTMLAnchorElement.eventHandler(https://code.angularjs.org/1.4.0/angular.js:3247:21)
答案 0 :(得分:14)
您似乎遇到了错误,因为您没有使用{param: value}
方法来调用指令中的函数。 plunkr也缺乏cx.outer
功能,所以我不确定我们预期会发生什么。
我已经更新了您的plunkr以演示它使用Angular 1.4并使用显式参数传递:http://plnkr.co/edit/T7aasD?p=preview。