我想知道,当我们有具有隔离范围的指令时,在隔离范围内使用方法是一个好习惯,或者我们应该在指令的父范围和方法中创建一个方法。将其作为对“&”的指令的引用传递。
例如,在下面的代码中,我在指令的隔离范围&中创建了“doSomething”方法。该指令使用三次(根据数据)。那么,现在angular会在每个隔离范围内创建方法“doSomething”对象3次,还是只有一个方法由3个隔离范围共享?
angular.module("app", []).directive('appDirective', appDirective);
function appDirective() {
var directive = {
restrict: 'EA',
template: '<span>{{obj.name}} <input type="checkbox" ng-model="obj.flag" ng-change="doSmothing(obj.flag)"></span> {{obj}}',
replace: false,
controller: controllerFunction,
scope: {
obj: '=appDirective'
}
};
function controllerFunction($scope) {
$scope.doSmothing = function(flag) {
console.log($scope.obj, flag);
}
}
return directive;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<html ng-app="app">
<body>
<div>
<ul ng-init="data=[{name:'Shiva',flag:false},{name:'Kumar',flag:false},{name:'Govind',flag:false}]">
<li ng-repeat="d in data">
<p app-directive="d"></p>
</li>
</ul>
</div>
</body>
</html>
答案 0 :(得分:0)
在棱角分明的文档中,我发现了我怀疑的确切说明。可以将“doSomething”方法放在“控制器”中的副作用域中,因为,控制器在预链接阶段之前被实例化,并与其他指令共享。这允许指令相互通信并增强彼此的行为。