Я установил службу для обмена некоторыми данными/состоянием между несколькими контроллерами. В одном контроллере я обновляю некоторые свойства службы с данными области с помощью функции сохранения. Эти данные затем используются в других контроллерах, назначая значение области для службы. Проблема заключается в том, что в зависимости от типа данных, которые первый контроллер назначает службе, их поведение отличается. Если данные модели являются примитивными значениями, тогда свойство службы будет ТОЛЬКО обновляться при запуске функции сохранения. Однако, если данные модели являются объектом, он будет продолжать обновлять службу по мере изменения данных модели. Я ищу для реализации «сохранить» функциональность, так что это не то, что я ищу.AngularJS: Как правильно установить свойство службы из данных модели в контроллере?
Итак, я пытаюсь понять различное поведение: примитивный против объекта и почему объект немедленно обновляется, а также, что было бы правильным способом реализовать функцию сохранения с объектом. Я знаю, что вы можете использовать события, и я мог бы $ broadcast и event на $ rootScope и использовать это событие на втором контроллере, чтобы присвоить свойство службы переменной var, но мне нравится простота присвоения услуги области в второго контроллера и хотел бы использовать этот метод, если это возможно.
Вот упрощенный пример.
var myApp = angular.module('myApp', []);
myApp.service('myService', function() {
this.text = '';
this.objText = {};
this.setText = function (text) {
this.text = text;
};
this.setObjText = function (obj) {
this.objText = obj;
};
});
myApp.controller('InputCtrl', ['$scope', 'myService', function ($scope, myService) {
$scope.textObj = {};
$scope.saveText = function (text) {
myService.setText(text);
}
$scope.saveObj = function (obj) {
myService.setObjText(obj);
}
}]);
myApp.controller('OutputCtrl', ['$scope', 'myService', function ($scope, myService) {
$scope.myService = myService;
}]);
И в представлении (частичное):
<div ng-controller="OutputCtrl">
<strong>Text:</strong> {{ myService.text }}<br>
<strong>Obj Text:</strong> {{ myService.objText }
</div>
Полная скрипку здесь: http://jsfiddle.net/anpsince83/uRH93/2/
aaronp, я считаю, что @charlietfl пытается указать, что вы либо ссылаетесь на неправильную скрипку, либо на ваш пример скрипта не имеет ничего общего с вопросом. – Stewie
Стьюи, ты прав. Теперь я вижу, что я связал неправильную скрипку. Мои извинения charlieftl. Я обновил вопрос с правильной скрипкой. – aaronp
Угловое правило большого пальца ... всегда есть точка в 'ng-model' – charlietfl