コントローラのスコープのブール変数にバインドして、ロードするアニメーションを表示するかどうかを指定しようとしています。ただし、次のコードは機能しません。 $timeout
内の関数は実行されますが、ビューは更新されません。コントローラのプリミティブ値へのバインド
クロムエクステンションエクステンションを使用してスコープを検査すると、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>
abovecodeは一例であり、実際に私はwqasが返さGETリクエストの後に値を設定します。
$http.get().then(function() {
loading=false;
}, function() {
loading=false;
})
でも効果は同じです。
を、それは '$べきではありません'loading = false'の代わりに' scope.ctrl.loading = false'ですか? – Titus