Я пытаюсь передать данные между (я думаю) двумя дочерними контроллерами. Попытка сделать это с фабрикой.
testFactory.js
app= angular.module('testApp');
app.factory('values', [function () {
var testValues= {
valueA: ''
};
return {
setValueA: function(a) {
testValues.valueA= a;
},
getValueA: function() {
return testValues.valueA;
}
};
}]);
В разных JS файлах так разные контроллеры. controller1.js (этот устанавливает значение)
angular.module('testApp')
.controller('firstCtrl', ['$scope''values',
function ( $scope, values) {
values.setValueA("MyTestValue");
}]);
controller2.js это считывает значение.
angular.module('testApp')
.controller('secondCtrl', [ '$scope', 'values',
function ( $scope, values) {
$scope.valueA = values.getValueA();
}]);
Я включаю js на стороне HTML. Оба контроллера заводские видят (функции вижу при отладке). Моя проблема в том, что второй не имеет никаких значений. Как будто это совершенно новый метод. Не уверен, что мне не хватает?
firstCtrl
будет полностью инициализирован к моменту инициализацииsecondCtrl
, поэтому значение, установленное вfirstCtrl
, может быть не установлено. Самый простой (хотя, возможно, и не лучший) способ синхронизировать эти значения — использовать$scope.$watch
наvalues.getValueA();
. - person laughingpine   schedule 18.10.2017