选择指令范围

时间:2013-07-26 17:24:38

标签: javascript angularjs architecture angularjs-directive

标题可能有点误导,但我想不出更好的描述。

我写了一个包含ng-repeat

的指令
app.directive('appDirective',function($purr){
    var template = '' +
        '<div ng-repeat="elements in queue">' +            
        '</div>';

    return{
        template: template
    }
});

如果我是正确的,我可以选择两种方式为我的指令提供queue

1:通过链接功能

    return{
        restrict: 'A',
        template: template,
        link: function(scope){
                scope.queue =[];
        }
    }

2:通过控制器

    return{
        restrict: 'A',
        template: template,
        controller: directiveCtrl
    }

app.controller('directiveCtrl',function($scope){
    $scope.queue = [];
});

我应该选择哪种方式?为什么?

1 个答案:

答案 0 :(得分:1)

指令的链接功能和控制器功能之间几乎没有区别。通常,您可以将方法,$ watch等放入其中。控制器将首先运行,这有时很重要。您可能希望将范围操作函数放在控制器中,以便与框架的其余部分保持一致。

当控制器和链接函数使用两个嵌套指令运行时,

This fiddle会记录。

另见Difference between the 'controller', 'link' and 'compile' functions when defining a directive

.