AngularJS:来自服务的数据未更新

AngularJS: Data from service is not updated

本文关键字:数据 更新 服务 AngularJS      更新时间:2023-09-26

我有一个模板,它从服务中获取数据。服务中的数据由指令更新。

数据更新后,它不会在模板中更新。

// In my template
{{service.get()}}
// In my service
.service('service', function($http){
    var _val = 5;
    return{
        get:function(){
            return val;
        },
        set:function(val){
            _val = val;
        }
    };
});
// In my directive
var someDirective = angular.module('app.someDirective',[]);
someDirective.directive('someDirective', ['service', function(service) {
    return function(scope, element, attrs){
        $(element).on('scroll', function(event){
            service.set(15);
        });
    };
}]);

如果我在任何其他地方调用service.set(x)(就像其他控制器一样),它可以100%正常工作。

也许有人知道,我做错了什么。(非常感谢)

编辑更清楚一点:

加载页面时,将显示"5"(正确)。但是,当值应该更新时,service.set()-函数会被正确调用(从指令调用),但模板中没有任何变化。

如果我在其他任何地方调用service.set(),它都有效(值在模板中更新)。

您的事件发生在摘要周期之外。最简单的修复:

$timeout(function() {
    service.set(15);
});

快速修复方法是将集合包装在$timeout中。事情没有得到更新的原因是angular不知道在$(element).on触发时运行摘要。另一种解决此问题的方法是使用$evalAsync