服务值重置为默认值?

时间:2016-02-17 23:48:00

标签: javascript angularjs

我发誓我以前做过这件事,但是我在这里碰到了我的头,无法弄清楚出了什么问题。我的控制器是不是对服务进行更新,还是每个控制器init都重置服务?

我使用默认值加载我的服务。

angular.module('app')
 .service('Config', function () {
  this.name = 'John Doe';
});

在我的控制器中,我致电该服务。

angular.module('app')
 .controller('TestCtrl', function (Config) {
  var self = this; 
  self.name = Config.name;
});

我的观点如下所示。服务值和控制器值(相同)似乎在范围内更新,但就像我说的那样,我失去了路线变更的新价值。有任何想法吗!!这太糟糕了。

<input type="text" ng-model="test.name">

1 个答案:

答案 0 :(得分:1)

考虑一下

var a = { name: 'foo' };
var b = { name: a.name };

现在,b.name也像你想象的那样“foo”。现在,如果我执行

b.name = 'bar';

现在,b.name是“bar”,但a.name仍然是“foo”。

如果您想维持服务中的价值,则必须在ng-model中使用该值。

.controller('TestCtrl', function(Config) {
    this.config = Config;
});

<input type="text" ng-model="test.config.name">