如何共享对数据模型的只读访问权限?

How do I share read-only acces to a data model?

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

在我看来,如果它把模型放在 service/factory 中,我要么允许要么阻止所有修改。如果我把它放在 rootscope 上也是一样。

做这样的事情的常规方法是什么?

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

所以使用这种场景的最佳方式angular service 更好也请耐心等待我的英语。

您可以将模型放在 service/factory 中,并为其分配 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();