AngularJS:来自服务的数据未更新
AngularJS: Data from service is not updated
我有一个模板,它从服务中获取数据。服务中的数据由指令更新。
数据更新后,它不会在模板中更新。
// 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
。
相关文章:
- 平均值:无法将数据更新到数据库
- d3在数据更新时错误地附加了dom元素
- 使用角度传递的数据更新模态
- jQuery使用XML数据更新UL列表
- ng表DOM未使用数据更新进行更新
- 在线/离线数据更新移动最佳实践
- 使用 预测 API 数据更新的 HTML 模板
- JQuery 数据表列数据更新工作太慢
- 使用Plotly中的新数据更新图形的高性能方法
- 使用新数据更新 D3 饼图.json
- jQuery - 使用相同的数据更新 2 个或多个表单字段
- 如何在数据更新时更新可重用的 d3.js 图形
- 组合框/下拉框在数据更新后未更新
- 在 JavaScript 中的数据更新后,我的 DOM 对象不会更新
- 如何使用来自外部源的数据更新 ng 模型
- 主干.js:使用不同的数据更新集合
- 对数据库进行 AJAX 编辑时,我是否应该立即使用新数据更新接口
- 计划脚本以使用外部数据更新数据库
- 使用从 MongoDB 获取的新数据更新对象属性
- 如何每 n 分钟使用数据更新一次 Web 应用程序