我遇到了一個看起來很容易編寫的指令問題。根據我的理解,我的問題與評估表達式的範圍有關。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函數。
是的,這是默認的行爲。 –
我已更新您編輯的問題的答案。 –