我遇到了一个看起来很容易编写的指令问题。根据我的理解,我的问题与评估表达式的范围有关。ngClick针对范围而不是针对范围进行评估
还有一个plunker演示。
我有一个控制器和一个指令,下面的JavaScript代码:
angular.module('parentGet', [])
.controller('Parent', function($scope) {
$scope.foo = function() {
alert('hello world');
};
})
.directive('child', function() {
return {
restrict: 'A',
scope: {
fn: '&'
},
link: function($scope) {
$scope.fn2 = function() {
$scope.fn();
}
}
};
});
此代码是从以下HTML使用
<body ng-controller="Parent">
<div child fn="foo" ng-click="fn2()">
<h1>Test</h1>
</div>
</body>
当我点击的股利,NG-的但是当我在angular.js文件(line 22949 of the 1.3.8 version)中设置断点时,我可以看到ng-click是针对父控制器作用域评估的,而不是针对子指令隔离作用域评估的。
任何建议,使该代码的工作?
编辑
更具体地讲这个问题我已经是,FN2没有被调用,这似乎在我的情况很奇怪。 ng-click试图再次评估fn2()表达式的控制器作用域,该作用域没有任何fn2函数,它导致角度取noop函数。
是的,这是默认的行为。 –
我已更新您编辑的问题的答案。 –