【发布时间】:2015-09-21 20:11:12
【问题描述】:
内部视图我使用 ng-include 和 ng-if 有条件地呈现 html
<div ng-controller="myController">
<div ng-if="myProperty == 1">
<div ng-include="'view1.html'"></div>
</div>
<div ng-if="myProperty == 2">
<div ng-include="'view2.html'"></div>
</div>
</div>
在控制器内部我有 $scope.myProperty,它使用来自其他 js 对象的 $scope 注入在控制器内部接收值。在这个控制器上,我还有回调函数,它每 x 秒更新一次 $scope.myProperty。
app.controller('myController', function ($scope) {
...
$scope.myProperty = 0; //init value
function callback() {
$scope.$apply(); // force update view
// correctly write myProperty value on every data change
console.log($scope.myProperty);
}
var otherJsObject= new myObject($scope, callback);
otherJsObject.work();
...
}
回调函数正确更改myProperty 值,但它不会每次都更新内部视图。
更新: $scope.bindUIProp = { a: $scope.myProperty};
function callback() {
$scope.$apply();
$scope.bindUIProp.a = $scope.myProperty;
console.log('Callback ' + $scope.myProperty);
console.log('drawstage ' + $scope.bindUIProp.a);
}
var otherJsObject= new myObject($scope, callback);
otherJsObject.work();
在内部视图中我使用了对象属性
<div ng-controller="myController">
<div ng-if="bindUIProp.a == 1">
<div ng-include="'view1.html'"></div>
</div>
<div ng-if="bindUIProp.a == 2">
<div ng-include="'view2.html'"></div>
</div>
</div>
这种方法在每次刷新页面时都有效,当 scope.bindUIProp.a 更改为 2 时,parial view 不会从 view1 更新到 view2。
【问题讨论】:
-
我想你应该向我们展示更多你的代码。这没有意义。
-
试着把例子放到jsfiddle或者codepen.io或者plunker中
-
它可能是一个范围问题,尝试使用点符号,检查这个stackoverflow.com/questions/17606936/angularjs-dot-in-ng-model
标签: javascript angularjs