Я не уверен, что у меня проблема с «лучшими практиками», когда я пытаюсь решить эту проблему странным и прекрасным способом или владеть захватом AngularJS просто еще нет.Передача/обновление данных на фабрике от одного контроллера до другого
Сценарий: Так что я пытался придумать способ, чтобы иметь «originCity.cityName» будет выводиться на странице несколько раз, все ссылки на один и тот же объект внутри одной и той же фабрике с надеждой, что если я установите его на какое-то другое значение (например, «Test String»), затем он будет ретроактивно заменять все {{originCity.cityName}}
, которые у меня есть на странице.
module.service('cityFactory', function() {
return {
originCity: {
cityName: 'TestLocation'
};
//Update the city
this.update = function (newCityName) {
this.originCity.cityName = newCityName;
}
});
В двух отдельных контроллеров у меня есть следующий вызов на завод:
$scope.originCity = cityService.originCity
И, чтобы продемонстрировать, в отдельном контроллере у меня есть следующий вызов метода обновления завода:
$scope.setCity = function() {
cityService.update('Test String');
}
Как я уже упоминал выше, это очень ново для меня, поэтому я мог бы ошибиться, но я надеялся иметь фабрику с методом, который я могу позвонить из любой точки мира e (пока все зависимости находятся в очереди), чтобы обновить это значение в нескольких местах.
Если I console.log
this.originCity.cityName
в методе обновления внутри фабрики, то он правильно выводится как Test String
, но другие ссылки на данные в настоящее время не обновляются.
Как называется метод обновления? Если вы поместите его в '$ watch', он должен правильно обновиться – Guinn
О, подождите, вы обновите завод .. пропустите это. В этом случае, как вы меняете стоимость? через поле ввода? – Guinn
@Guinn для демонстрационных целей Я старался держать его как можно более простым, поэтому я просто помещал случайную кнопку на странице, чтобы, если я нажму, я вызываю метод обновления. – Aleski