我的指令链接函数中有这个函数:
scope.$parent.resetData(){
scope.data = '';
}
在我的html:中
<ul ng-model="selectedObject">
<li>{{ object.label }}</li>
</ul>
<button ng-click="resetData()">reset!</button>
<directive data={{ selectedObject.dataset }}></directive>
在我的应用程序控制程序中
$scope.$watch('selectedObject', function(){
$scope.resetData(); //this cant be used
});
我不能在控制器作用域中使用$scope.reset(),有没有一种方法可以以最简单的方式重用该函数,而不是为该数据集做工厂/服务?
输入指令selectedObject
而不是selectedObject.dataset
,并让它在内部管理重置。
它会更封装,这会很好。如果更改selectedObject
总是重置数据,那么将指令视为一个组件并在其中包含逻辑会使其更加自包含。这样一来,外部代码就不必担心帮助指令完成其工作。
如果在链接函数中插入ctrl参数您可以直接与主控制器对话
link: function(scope, el, attr, ctrl) {
scope.isSmall = function(){
return ctrl.isSmall();
};
}
至少对我来说是这样的