通过jQuery添加ng样式属性,angular不更新
Adding ng-style attribute via jQuery, angular not updating
下面是一个演示问题的plunker:http://plnkr.co/edit/1ceWH9o2WNVnUUoWE6Gm
代码:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
console.log('yeah');
var header = $('#weird');
console.log(header);
header.attr("ng-style", "{'background-color' : 'red'}")
});
它添加了ng样式属性,但angular不知道它,所以它从未应用过。
这是我尝试做的一个简化版本,我尝试向chesborard.js生成的棋盘中的每个正方形添加一个ng样式属性。我通过将ng样式属性添加到编译函数内部的每个正方形来实现这一点,就像将ng样式特性添加到标头一样。如果有更好的方法可以做到这一点,我很想知道。如果没有,当添加ng样式属性时,我如何才能更新angular?
我读过关于$scope
、$digest
和$apply
的书,也试过和它们玩,但一直没能弄清楚。实现这一目标的最佳方法是什么?
这取决于指令的确切工作方式,但在ngStyle
的情况下,您可能需要重新编译一个元素:
app.controller('myCtrl', function($scope, $compile) {
console.log('yeah');
var header = $('#weird');
console.log(header);
header.attr("ng-style", "{'background-color' : 'red'}");
$compile(header)($scope);
});
$apply
通常是在Angular与普通JS/jQuery混合时提出的,但只有在范围绑定需要更新时才有意义,事实并非如此。此外,当异步回调发生时,这是有意义的,但应用了控制器构造函数期间发生的范围更改(没有区分角度和非角度内容的魔法,所以如果您在不必触发摘要的情况下触发摘要,就会出现"$apply-assembly in progress")。
我想你是有意使用jQuery的,我可以让你省去"angular讨厌jQuery选择器bad bad you doing wrong"的单调乏味。
相关文章:
- Angular:更新一次性绑定的数据
- 通过jQuery添加ng样式属性,angular不更新
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记
- Angular没有根据模型更新我的选择元素
- 在日期更改后更新Angular UI引导程序日期选择器选项
- Angular JS-文本框未在独立范围内更新
- 由控制器调用的服务更改时,Angular未更新视图
- 视图ngValue-Angular JS中未更新模型的更改
- 如何在编译时更新yeoman angular中的html路径
- 使用angular更新json值
- 将多模型表单从 Angular 更新为 Sinatra
- 将初始 Razor 输出与 Angular 更新相结合
- 如何使用 Angular 更新 NG-Repeat 中的列表
- 如何使用angular更新DOM元素
- Angular:更新服务并在控制器之间共享数据
- Angular:更新子函数中的作用域var
- 如何使用Angular更新Kendo-UI网格上的数据并持久化层级选择?
- Angular 2:更新服务变量和视图
- 动态创建的带有填充数组的下拉列表不会使用angular更新
- 使用Angular更新jQuery Chosen选定的值