我似乎无法弄清楚为什么样式属性没有得到更新。在我更大的应用程序中,它似乎工作正常。
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 的服务中设置另一个变量。- 没有看到任何变化。
如果有人能给我一个答案,那就太好了。如果你能告诉我为什么它没有得到更新,我也会很高兴。