指令何时应该有自己的控制器?

时间:2013-11-12 14:17:31

标签: angularjs

我现在写了几个指令。其中一个或两个使用自己的控制器。我一直在研究一些角度自己的指令是如何工作的,以及一些角度UI引导指令的工作原理。

他们有时也会使用控制器。在大多数情况下,控制器似乎只是添加了一种包装代码并使其更加模块化的好方法。我确信必须有一些关于何时你的指令应该得到自己的控制器的更好的建议。

1 个答案:

答案 0 :(得分:2)

From the docs

  

......读者可能想知道链接和控制器之间的区别。基本区别在于控制器可以公开API,链接功能可以使用require与控制器进行交互。

如果你有两个或多个需要在它们之间共享数据的指令,建议在一个指令中定义一个控制器,然后在另一个指令中需要它:

.directive('myFirstDirective', function(){
    return {
        //...
        controller: function(){
            this.doSomething = function(){...};
            return;
        }
        //...
    };
})
.directive('mySecondDirective', function(){
    return {
        require: 'myFirstDirective',
        //link's fourth param is the required controller object.
        link: function($scope, $iElement, $iAtrrs, requiredController){
            $iElement.on('click', function(){ 
                requiredController.doSomething();
                return;
            });
            return;
        }
     };
});

如果指令彼此独立,那么只有链接函数就可以了。