选择指令范围

Choosing a directive scope

本文关键字:范围 指令 选择      更新时间:2023-09-26

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

我写了一个指令,其中包括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 = [];
});

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

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

当控制器和链接函数使用两个嵌套指令运行时,该fiddle会进行日志记录。

另请参阅';控制器'';链接';和';编译';定义指令时的功能

.