我在我的指令链接函数中有此函数:

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>


在我的app.controller中

$scope.$watch('selectedObject', function(){
   $scope.resetData(); //this cant be used
});


我不能在控制器范围内使用$ scope.reset(),有没有办法能够以最简单的方式重用该功能,而不是为此数据集提供工厂/服务?

最佳答案

输入指令selectedObject而不是selectedObject.dataset,并在内部管理重置。

它将被更封装,这将是很好的。如果更改selectedObject始终会重置数据,则将指令视为组件并将其包含在内部逻辑中使其更加独立。这样,外部代码就不必担心帮助该指令完成其工作。

08-19 14:52