实际上,我认为$parent
不建议直接使用这种方式来定义指令。因为实际上对于可以从父控制器调用的函数没有明显的依赖关系,这使得它们更难重用。
我不知道实际用例为什么需要这个,但我假设您使用control
了多次并且您不想复制粘贴一堆定义一些常见行为的属性。
在这种情况下,我会推荐一点其他方法:添加一些将定义该行为的指令容器,并且控制将需要此指令作为依赖项:
myApp.directive('controlBehavior', function() {
return {
restrict: 'E',
scope: {
modifyfunc: '&'
},
controller: function($scope, $timeout) {
this.modifyfunc = $scope.modifyfunc;
}
};
});
myApp.directive('control', function() {
return {
restrict: 'E',
require: '^controlBehavior',
replace: true,
scope: {
title: "@"
},
template : '<div>{{title}}<button ng-click="edit()">Edit</button></div>',
link: function(scope, element, attr, behavior) {
scope.edit = behavior.modifyfunc;
}
}
});
这是一个演示这种方法的小提琴:http: //jsfiddle.net/7EvpZ/4/