【发布时间】:2015-05-28 14:20:43
【问题描述】:
看看下面的代码:
html:
<body ng-app="myApp">
<div ng-controller="MainController">
<input type="button" ng-click="talk()" value="outside directive" />
<div my-element>
<input type="button" ng-click="talk()" value="inside directive" />
</div>
</div>
</body>
js:
var app = angular.module('myApp', []);
app.controller('MainController', function($scope){
$scope.talk = function() {
alert('HELLO1');
}
});
app.directive('myElement', function(){
return {
restrict: 'EA',
scope: {},
controller: function($scope) {
$scope.talk = function() {
alert('HELLO2');
}
}
};
});
如您所见,有一个控制器,它嵌套了一个指令。
有 2 个按钮,一个在控制器级别(指令之外),一个在指令my-element 内。
主控制器定义了一个作用域方法talk,嵌套指令控制器也定义了一个方法-talk-但请记住该指令具有隔离作用域(我希望talk 方法不会继承到指令的范围内)。
两个按钮都会发出“HELLO 1”的警报,而我希望第二个按钮(指令内部)按照指令控制器中的定义发出“HELLO 2”的警报,但它没有 - 为什么?
我在这里错过了什么?当第二个按钮会提示“HELLO 2”但具有相同的方法名称(“talk”)时,我怎么能得到结果?
谢谢大家
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope