0

这可能是一个愚蠢的问题,但无论如何。我知道服务就像单例一样,有利于存储共享数据。但是我一直在为一些概念苦苦挣扎——当使用像 ng-repeat 这样的内置指令时,我们是否总是必须编写“中间人”方法来访问/操作服务中的共享对象?例如

我们有

appModule.service('fruits', function(){
     this.items = ["apples", "bananas"];
});

要使用ng-repeat访问这些项目,我们必须首先需要编写控制器方法,如

appModule.controller("fruitsController", function($scope, fruits){
    $scope.getFruits = function(){ return fruits.items;}
}); 

那么如何使用自定义指令呢?鉴于服务也可以注入到指令中,它可以直接访问服务。这两种方法有什么优缺点吗?

4

1 回答 1

0

所以我想你是在问“为什么不对所有东西使用自定义指令而不是控制器?”......

好吧,基本上是因为那将更难测试。这有点像问“为什么要分开代码?”。

指令的目的是在模型和视图(DOM)之间提供两种访问方式,并处理设置这些交互。

控制器的目的是为应用程序封装“业务逻辑”。

你能把它们混合成一个指令吗?是的。你应该?可能不是。

于 2013-11-07T17:51:37.190 回答