我在某个控制器的作用域上有一个对象,绑定到随附视图上的一些输入。我想与其他控制器共享该对象中的数据,以便它们可以读取它们,但它们不应该能够修改它。如何将只读访问共享到数据模型?
在我看来,如果它把模型放在服务/工厂中,我要么允许或者阻止所有的修改。同样的东西,如果我把它放在鼻根镜上。
做这种事情的方法是什么?
我在某个控制器的作用域上有一个对象,绑定到随附视图上的一些输入。我想与其他控制器共享该对象中的数据,以便它们可以读取它们,但它们不应该能够修改它。如何将只读访问共享到数据模型?
在我看来,如果它把模型放在服务/工厂中,我要么允许或者阻止所有的修改。同样的东西,如果我把它放在鼻根镜上。
做这种事情的方法是什么?
你可以把模型在服务/工厂,并分配的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();
简单而干净。谢谢。 – DSPC
只是为了讨论。如果您使用$rootscope
在全球存储您的数据,如$rootscope.data()
。例如,如果您定义了$rootScope.data()
,并且在控制器中定义了函数$scope.data()
,因为您忘记了第一个创建的data()
,则肯定会出错。
所以最好的方式来使用这种情况角service
更好也请忍受我的英语。
我与服务/工厂去。 – ryanyuyu
@ryanyuyu对,这就是我目前正在做的。我希望能有一种方法来封装更多的东西 – DSPC