単純なng-classバインディングは、関数内で呼び出されたときにトリガされません。どのように解決できますか?この例では関数内のスコープの値を変更する方法 - コードが機能しないのはなぜですか?
$scope.afterHide = function() {
$scope.inputState = "fade-in";
}
<label ng-class="inputState">Next statement</label>
単純なng-classバインディングは、関数内で呼び出されたときにトリガされません。どのように解決できますか?この例では関数内のスコープの値を変更する方法 - コードが機能しないのはなぜですか?
$scope.afterHide = function() {
$scope.inputState = "fade-in";
}
<label ng-class="inputState">Next statement</label>
作品罰金:
angular.module("app",[])
.controller("ctrl", function($scope) {
$scope.afterHide = function() {
$scope.inputState = "fade-in";
};
$scope.reset = function() {
$scope.inputState = "";
};
});
.fade-in {
background-color: red;
}
<script src="//unpkg.com/angular/angular.js"></script>
<div ng-app="app" ng-controller="ctrl">
<label ng-class="inputState">Next statement</label>
<br><button ng-click="afterHide()">Invoke afterHide</button><br>
<button ng-click="reset()">Reset</button>
</div>
それは、私が動作する場合それは私のコードの全体的なロジックと関係があると思う。関数
$scope.afterHide
は、ディレクティブの1つのイベントによってトリガされます。このディレクティブはコントローラ外で定義されます。 HTMLでは基本的にちょうど別のdivに変更の状態があります。変更が発生すると、ページ上の他の要素も影響を受けます。このコンテキストでは、他の要素がラベルタグです。変更が発生すると、コントローラー内の$scope.afterHide
関数が、コントローラーの外で定義されているディレクティブによって呼び出されます。
スコープは、アプリケーションのDOM構造を模倣する階層構造で配置されています。
ng-click
指令はそのhierachy外である範囲で機能を呼び出すことができません。また、ng-click
ディレクティブが分離スコープを使用するディレクティブ内のテンプレート上にある場合、そのイベントは親スコープの式 "&
"バインディングで接続する必要があります。
返信いただきありがとうございます。それがうまくいくなら、私のコードの全体的なロジックと関係があると思います。関数$ scope.afterHideは、ディレクティブの1つのイベントによってトリガされ、このディレクティブはコントローラの外で定義されます。 HTMLでは基本的にちょうど別のdivに変更の状態があります。変更が発生すると、ページ上の他の要素も影響を受けます。このコンテキストでは、他の要素がラベルタグです。変更が行われると、コントローラー内の$ scope.afterHide関数が、コントローラーの外で定義されたディレクティブによって呼び出されます。 – redleome
回答の更新を参照してください。 – georgeawg
それはスポットです。私は今、それを働かせましたuou – redleome
インサイド 'scope'オプション' '私のショー' を参照してください。 '=' 'でなければなりません' 'myShow':「= '' –
はい。実際には、その指令の設定にはかなりの誤差がありますが、私の質問には関係ありません。 実際のエラーは次のとおりです。 $ scope.afterHide = function(){ $ scope.inputState = "fade-in"; //この行はここでは呼び出されないWHY? console.log( '更新ステートメントが完全に非表示になっています'); } – redleome
**問題に関連していない問題を排除します。** [最小限の、完全で検証可能な例を作成する方法](https://stackoverflow.com/help/mcve)を参照してください。 – georgeawg