У меня есть 2 компонента, которые оба обращаются к услуге.Один компонент доставляет объект, а другой должен его отображать или просто получать.Проблема в том, что после завершения процесса инициализации переменная в компоненте отображения не изменяется.
Я пытался использовать $ scope , $ scope. $ Apply () , this. $ OnChanges , а также $ scope. $ watch для отслеживания переменной, но она всегда остается неизменной.
Этот контроллер из компонента дисплея предоставляет текст, который из поля ввода, находится в объекте.
app.controller("Test2Controller", function ($log, TestService) {
this.click = function () {
let that = this;
TestService.changeText({"text": that.text});
}
});
Это служба, которая получает объект исохраняет его в this.currentText .
app.service("TestService", function ($log) {
this.currentText = {};
this.changeText = function (obj) {
this.currentText = obj;
$log.debug(this.currentText);
};
this.getCurrentText = function () {
return this.currentText;
};
});
Это контроллер, который должен затем отображать объект, но даже не может обновить this.text переменная.
app.controller("TestController", function (TestService, $timeout, $log) {
let that = this;
this.$onInit = function () {
this.text = TestService.getCurrentText();
//debugging
this.update();
};
//debugging
this.update = function() {
$timeout(function () {
$log.debug(that.text);
that.update();
}, 1000);
}
//debugging
this.$onChanges = function (obj) {
$log.debug(obj);
}
});
Я потратил довольно много времени на поиск ответа, но большинство из них связаны с директивами или не работают в моем случае, например, одно решение для помещения объектав другой объект.Я подумал, что мог бы использовать $ broadcast и $ на , но я слышал, чтобы не использовать его.Угловая версия, которую я использую: 1.6.9