2017-06-14 9 views
-2

単純なng-classバインディングは、関数内で呼び出されたときにトリガされません。どのように解決できますか?この例では関数内のスコープの値を変更する方法 - コードが機能しないのはなぜですか?

$scope.afterHide = function() { 
 
    $scope.inputState = "fade-in"; 
 
}
<label ng-class="inputState">Next statement</label>

+0

インサイド 'scope'オプション' '私のショー' を参照してください。 '=' 'でなければなりません' 'myShow':「= '' –

+0

はい。実際には、その指令の設定にはかなりの誤差がありますが、私の質問には関係ありません。 実際のエラーは次のとおりです。 $ scope.afterHide = function(){ $ scope.inputState = "fade-in"; //この行はここでは呼び出されないWHY? console.log( '更新ステートメントが完全に非表示になっています'); } – redleome

+0

**問題に関連していない問題を排除します。** [最小限の、完全で検証可能な例を作成する方法](https://stackoverflow.com/help/mcve)を参照してください。 – georgeawg

答えて

1

作品罰金:

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ディレクティブが分離スコープを使用するディレクティブ内のテンプレート上にある場合、そのイベントは親スコープの式 "&"バインディングで接続する必要があります。

もっとINFOMATIONについて、

+0

返信いただきありがとうございます。それがうまくいくなら、私のコードの全体的なロジックと関係があると思います。関数$ scope.afterHideは、ディレクティブの1つのイベントによってトリガされ、このディレクティブはコントローラの外で定義されます。 HTMLでは基本的にちょうど別のdivに変更の状態があります。変更が発生すると、ページ上の他の要素も影響を受けます。このコンテキストでは、他の要素がラベルタグです。変更が行われると、コントローラー内の$ scope.afterHide関数が、コントローラーの外で定義されたディレクティブによって呼び出されます。 – redleome

+0

回答の更新を参照してください。 – georgeawg

+0

それはスポットです。私は今、それを働かせましたuou – redleome

関連する問題