Я пытаюсь найти способ создания службы, которая может сидеть на моем уровне самого высокого уровня и удерживать переменные, такие как состояние пользователя и все остальное.Уязвимость привязки AngularJs не обновляется
Сейчас я пытаюсь создать простой пример, в котором я связываю числа вместе. Однако слой пользовательского интерфейса никогда не обновляется, если я не заставляю мой угловой сигнал снова получить значение.
Что произойдет, если вы удалите строку, которая говорит getNumber(), что вы видите, что номер в html никогда не обновляется. Я попробовал называть $ apply и дал мне ошибку, что она уже действует.
Код:
$scope.update = function() {
SampleService.update();
//Forcing the number to be updated by asking the service to return it
$scope.number = SampleService.getNumber();
};
//Why doesn't this force $scope.number to change as SampleServce.number changes?
$scope.number = SampleService.number;
Услуги:
(function() {
'use strict';
angular
.module('Services')
.service('SampleService', SampleService);
SampleService.$inject = ['$http'];
function SampleService($http) {
var Service = {
number: 0
};
Service.update = function()
{
Service.number += 1;
};
Service.getNumber = function()
{
return Service.number;
};
return Service;
}
})();
Я просто понял это, но вместо хранения $ scope.service = SampleService Я делаю это, $ scope.State = SampleService.getData(), который возвращает объект службы из SampleService. Есть ли какие-либо выгоды или недостатки для наших двух подобных, но разных методов? –
Единственная разница между установкой его непосредственно и использованием 'getData()' заключается в том, что с помощью функции 'getData()' ваша служба не должна ничего возвращать. – Claies
Благодарим вас за ответ на этот вопрос и тот, который содержится в комментариях. Мне нравится мой подход getData из-за личной причины, я могу буквально видеть, что я ожидаю свои данные. –