2015-10-16 59 views
0

我在某个控制器的作用域上有一个对象,绑定到随附视图上的一些输入。我想与其他控制器共享该对象中的数据,以便它们可以读取它们,但它们不应该能够修改它。如何将只读访问共享到数据模型?

在我看来,如果它把模型放在服务/工厂中,我要么允许或者阻止所有的修改。同样的东西,如果我把它放在鼻根镜上。

做这种事情的方法是什么?

+1

我与服务/工厂去。 – ryanyuyu

+0

@ryanyuyu对,这就是我目前正在做的。我希望能有一种方法来封装更多的东西 – DSPC

回答

0

你可以把模型在服务/工厂,并分配的getter/setter函数吧,是这样的:

angular.factory('testFactory', [function(){ 

    var _yourModel = {} 

    return { 
     yourModel: function(newValue){ 
      if(newValue){ 
       _yourModel = newValue 
      }else{ 
       return angular.copy(_yourModel) //This will return a clone of _yourModel 
      } 
     } 
    } 

}]) 


//In your controller 
    $scope.model = testFactory.yourModel(); 
+0

简单而干净。谢谢。 – DSPC

0

只是为了讨论。如果您使用$rootscope在全球存储您的数据,如$rootscope.data()。例如,如果您定义了$rootScope.data(),并且在控制器中定义了函数$scope.data(),因为您忘记了第一个创建的data(),则肯定会出错。

所以最好的方式来使用这种情况角service更好也请忍受我的英语。