【发布时间】:2016-07-22 04:32:31
【问题描述】:
我正在尝试绑定到控制器范围内的布尔变量,以指示是否应显示加载动画。但是,以下代码不起作用。 $timeout 里面的函数运行了,但是视图没有更新。
当我使用 chrome 角度扩展检查范围时,我看到 ctrl.loading 是 true。
这是因为布尔值是 javascript 中的值类型,而不是引用类型吗?
我的猜测是视图实际上是绑定到true,而不是绑定到会改变的布尔值的位置。
如何让视图绑定到变量,而不是绑定到变量最初具有的值?
控制器:
function TestController($scope,$timeout){
"use strict";
var loading=true;
$timeout(function(){
loading=false;
}, 1000);
return {
loading:loading
}
}
模板:
<div>
<h1 ng-show="ctrl.loading">Loading</h1>
<h1 ng-hide="ctrl.loading">Not Loading</h1>
</div>
上面的代码只是一个例子,实际上我会在get请求wq返回后设置值。
$http.get().then(function() {
loading=false;
}, function() {
loading=false;
})
但效果是一样的。
【问题讨论】:
-
不应该是
$scope.ctrl.loading = false而不是loading = false吗?
标签: javascript angularjs javascript-databinding