在angular中加载数据到模型时如何更新视图
How to update view when loading data to model in angular?
我有几个<selects>
,每次模块上的对象属性更改值时都会更新。当我试图记住状态时,问题就来了。我保存每一个变化到localStorage
,但当我重新设计保存的对象在窗口重新加载,模型改变正确,但视图不显示的变化,除非我点击一个<select>
,然后是当所有其他的应该被选择得到他们的真实值从模型。
我可以看到,当加载被超时或事件侦听器延迟时,会发生这种情况。
我怎么能解决这个问题?
var my_app = angular.module('campaign_listing', [])
.controller('campaign_list_controller', campaign_list_controller);
function campaign_list_controller($http) {
var este = this;
this.filters = {
categories: ["a"],
};
function get_save_state() {
var items = JSON.parse(localStorage.getItem("filters"));
return items;
}
this.recover_state = function() {
var save = get_save_state();
console.log("recovering state:")
if (save) this.filters = save;
}
setTimeout(function() {
este.recover_state();
}, 300);
}
<select
id="multiselect_categories"
name="categories"
ng-model="ctrl.filters.categories"
ng-change="ctrl.update_fields()"
multiple="multiple">
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
使用angular的$timeout而不是setTimeout,这将强制一个新的文摘循环,它将更新UI
$timeout(function() {
este.recover_state();
}, 300);
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- 如何在渲染新视图之前关闭所有事件
- 从Backbone中的另一个视图调用新视图
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- 主干新视图反映旧模型数据
- 创建新视图时调用呈现函数
- 离子替换新视图的选项卡和页脚
- YII:如何将参数列表从js传递到控制器,并通过传递另一个列表来调用新视图
- AngularJS-关闭tile并从ngRepeat指令AngularJS中的模型加载新视图
- 美元AngularJs http.post不渲染新视图
- Angular UI Router新视图,相同的URL
- AngularJS:在Promise被解析后,为新视图操作DOM
- 骨干移除和新视图不会重置其属性数组内容
- 尝试将数据加载到新视图中
- 将js变量传递给控制器并在ci中构建新视图
- 在类似视图上使用class而不是id创建新视图
- React Login,一旦授权成功,移动到新视图
- Md-dialog弹出框(angular-material)作为一个新视图(约曼)加载进来
- 我的Backbone应用程序会闪烁“白色”.因为我在开始一个新视图之前先删除了视图
- 重定向到新视图时,保留rails中验证的错误消息