angularjs service中的factory 数据改变问题

javascript .factory('Test', function () {
    var jsonObj = {name:"3"};
    return {
        myMenu : function(){
            return jsonObj;
        }
    }

}

我在service中写了这个每一个服务

在controller中
我通过注入后使用 $scope.a = Test.myMenu(); $scope.a.name = 4;
这个时候我通过Test.myMenu()获取的数据就变化了 这个是为什么,想明白里面的原理。有人回答就万分感谢了

阅读 5k
3 个回答

核心的问题在于在angular中,service被设计用来在controller中复用和共享的,也就是说,service只会有一个实例,与此对应的是controller会在切换view之后销毁,再次进来时,会重新创建。

js里对象赋值都是引用。如果想避免这种情况,请调用时clone一个对象

app.factory('Test', function () {
    //var jsonObj = {name:"3"};
    return {
        myMenu : function(){
            return {name:"3"};
        }
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题