调用作用域$parent.function位于控制器中指令之外



我的指令链接函数中有这个函数:

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();
        };
     }

至少对我来说是这样的

最新更新