我想找到一种方法来创建一个服务,可以坐在我的最高级别的作用域,并保存变量,如用户状态和其他任何。AngularJs服务绑定不更新
现在我正在尝试创建一个简单的示例,将数字绑定在一起。然而,UI层不会更新,除非我强迫我的角度再次获得价值。
如果您删除了说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返回Service对象。我们两种类似但不同的方法有什么好处或缺点? –
直接设置和使用'getData()'之间的唯一区别是通过使用'getData()'函数,您的服务不必返回任何内容。 – Claies
谢谢你回答这个问题和评论中的问题。我喜欢我的getData方法,因为我可以从字面上看到我期待我的数据。 –