AngularJS ng 样式不随属性变化
AngularJS ng-style not changing with property
我似乎无法弄清楚为什么样式属性没有得到更新。在我的较大应用程序中,它似乎工作正常。
angular.module('Model', [])
.factory('SizeModel', function () {
return {
width: 200,
height: 100,
display:"block",
getCombined: function() {
return parseInt(this.width) + parseInt(this.height);
}
};
});
function AlbumCtrl($scope,SizeModel) {
$scope.master = SizeModel;
$scope.$watch("master",function(){
$scope.myprop = { display: $scope.master.display,
backgroundColor: "#333",
width: $scope.master.width+'px',
height: $scope.master.height+'px',
color: "#FFF"
};
});
}
function AnoCtrl($scope,SizeModel) {
$scope.master = SizeModel;
$scope.toggle = function(){
$scope.master.display = "none";
}
}
function EditCtrl($scope,SizeModel) {
$scope.master = SizeModel;
}
http://jsfiddle.net/ganarajpr/C2hRa/4/
这是一个小提琴,显示了我目前面临的问题。您会注意到,当您更改输入时,div 中的宽度和高度正在更新。但风格本身似乎并没有更新。谁能告诉我我在这里做错了什么?
我已经尝试了以下所有场景
- 使用 $scope.$apply.. - 抛出一个错误,指出$apply正在进行中。
- $rootScope.$apply - 同上。
- 在服务中设置另一个变量,该变量$watched另一个控制器中。 - 未看到任何变化。
如果有人能给我一个答案,那就太酷了。如果您能告诉我为什么它没有得到更新,那也将非常高兴。
您已一次性将
宽度和高度值分配给 myprop 样式字段。 因此,当您更改宽度或高度时,myprop 不会更改。
将 myprop 值更改为计算其值的函数...
http://jsfiddle.net/DyHHJ/
您在 AlbumCtrl 中的$scope.$watch
只监视引用不等式,这是通过 !== Javascript 运算符通过严格比较确定的。 由于仅更改对象上的属性,因此对 master
的引用仍然相同,并且不会触发$watch。您需要向$watch传递一个额外的参数才能使用 objectEqual。 看到这个 plunkr,下面是相关的代码:
$scope.$watch("master",function() {
$scope.myprop = {
display: $scope.master.display,
backgroundColor: "#333",
width: $scope.master.width+'px',
height: $scope.master.height+'px',
color: "#FFF"
};
}, true);
第三个参数true
告诉 angular 通过 angular.equals 函数确定 watchExpression 的不等式。它正确确定更新的master
对象已更改,并更新myprop
相关文章:
- 在异步函数调用过程中,当对象的属性值发生变化时,JavaScript中的对象属性值会发生什么变化
- Jquery-背景图像随select中的数据属性而变化
- JS触发的复选框's已检查属性;t动态变化
- 如何观察聚合物元素属性值从索引.html的变化
- AngularJS:当css类发生变化时,如何通过切换来更改颜色属性
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 角度2 - 检测属性@Input的变化
- 如何处理 redux 存储所持有的数据中不断变化的属性
- AngularJS ng 样式不随属性变化
- Angularjs 指令更新到 DOM 属性值的变化
- JS监视CSS属性的变化,如“display:none”=>“display:block”
- 使用 change() 检测属性值的变化
- IFRAME中的SRC属性随onload函数而变化
- 根据可观察到的变化更新相关属性
- BreezeJS是如何跟踪属性变化的
- 我怎样才能$watch看到Angular服务的属性变化呢?
- 选择性地发布聚合物元素的属性变化
- 如何观察对象方法返回的属性变化
- 注意JavaScript对象属性变化的优雅方式
- 如何使knockoutJS实时响应属性变化