2016-02-17 3 views
1

Клянусь, я делал это раньше, но я стучу головой о стену здесь и не могу понять, что случилось. Является ли мой контроллер не внесением обновлений в службу или является сбросом службы при каждом инициализации контроллера?Сервисные значения, возвращаемые по умолчанию?

Я загружаю свой сервис по умолчанию.

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

Ваша модель связана с 'test.name'. Когда новое значение присваивается 'ngModelController', предыдущая ссылка на' Config.name' нарушена. – Phil

+1

Нет, это простые старые ссылки JavaScript – Phil

ответ

1

Рассмотрим этот

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

Прямо сейчас, b.name также "Foo", как вы бы себе представить. Теперь, если я исполню

b.name = 'bar'; 

Теперь b.name есть «бар», однако a.name все равно будет «Foo».


Если вы хотите сохранить значение в вашей службе, вы должны будете использовать это в вашем ng-model.

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

и

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

Genius! Я идиот ... Спасибо! – Nick

Смежные вопросы