search

Home  >  Q&A  >  body text

javascript - 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()获取的数据就变化了 这个是为什么,想明白里面的原理。有人回答就万分感谢了

PHPzPHPz2902 days ago404

reply all(3)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 14:56:17

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

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 14:56:17

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

    reply
    0
  • 阿神

    阿神2017-04-10 14:56:17

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

    reply
    0
  • Cancelreply