angularJs中修改controller后的数据没有重新渲染页面
来源:互联网 发布:java中的final关键字 编辑:程序博客网 时间:2024/06/05 07:08
场景重现
在controller中我们先默认给定model的值,然后调用了一个外部函数改变这个model的值,页面上没有变化,还是显示默认值。
原因分析
AngularJS只会关心在AngularJS的执行上下文中的发生的数据模型(model)的变化(比如,改变数据的代码在$apply()里面)。AngularJS内建的指令也会自动触发$digest循环所以任何数据模型(model)的改变都会反映到视图中。但是,如果我们更改一个不在AngularJS执行上下文中的数据模型(model),就需要人为的调用$apply()来提醒AngularJS数据发生变化了。就像是要告诉AngularJS,我们改变了一些数据,他应该启用监听器以便于让我们所做的改变能够反映出来。例如,当使用Javascript的setTimeout()函数来更新一个数据模型的时候,AngularJS就没办法知道你改变了数据模型。这种情况下,调用$apply()来触发$digest循环就是你的责任了。类似的,如果你写了一个指令,这个指令是设置了一个DOM事件监听器,更改数据模型的代码在事件处理函数里,那么,也需要调用$apply()来保证更改能够反映出来。
案例重现
通过运行这个例子,我们会发现,在两秒之后,函数开始执行,并且更新数据模型。但是,视图却没有更新。原因我们也应该猜到了,我们忘了调用$apply()。因此,我们需要像下面这样来写我们的getMessage()函数。
运行更新后的例子,两秒之后,我们就能够看到视图更新了。我们所做的唯一的改变就是将代码放进了$scope.$apply()中。这样,就能自动的去调用$rootScope.$digest(),然后,监听器就会启动,视图就会更新了。
阅读全文
0 0
- angularJs中修改controller后的数据没有重新渲染页面
- vue修改对象的属性值后页面不重新渲染
- 微信小程序-修改数据后页面不渲染
- myeclipse中修改JSP页面后浏览时没有显示修改后的效果解决
- angularjs-渲染完数据后执行js
- Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面
- VueJs无法检测到数组的变化(数组变了没有重新渲染页面)
- AngularJS中重新加载当前路由页面
- Rails修改渲染后页面代码
- 加载ajax内容到页面后的样式重新渲染需$().listview('refresh');
- angularjs的controller间数据传递
- Spring MVC 中 直接响应渲染的页面 mvc:view-controller
- AngularJs数据渲染到视图后再执行操作
- AngularJS实战之渲染完数据后执行js
- (十八)angularjs中模块bootstrap后,动态注册新的controller
- SpringMVC 中 jsp 页面对 Controller 返回数据的使用
- Delphi/C++Builder在没有做任何代码修改,重新编译后CRC不一致的解决方案。
- 修改项目名字后,重新部署时,原项目名字没有改变的问题
- Mysql : Mysql引擎
- zoj3317——Murder in Restaurant
- IDEA快捷键
- 【一起来学C语言】函数(二)
- LeetCode-021 Merge Two Sorted Lists
- angularJs中修改controller后的数据没有重新渲染页面
- mysql 查看帮助文档,以及怎样创建表
- python 操作 postgreSQL 数据库 Demo ( 基于PyGreSQL 包)
- Markdown使用table标签创建表格的问题
- 斐讯0元购路由器可靠吗?想必这是很多人都会问的问题
- wechat4J存在的BUG
- javascript中常用鼠标事件和键盘事件
- 数据库
- 在【ES6】的【Class】中编写属性的取值函数【get】和存值函数【set】时的三点注意事项