2017-05-26 11 views
0

私はコントローラ内の変数を関数を呼び出して変更しています。変数 isSameTaxonomyElementsはUIの要素とバインドされています。しかし、それはUIに反映されています。コントローラの変数の変更がUIに反映されていない - AngularJS

$scope.validateAddElementButton = function (name, label) {   
      for (var i = 0; i < $scope.elements.length; i++) {    
       if (name === $scope.elements[i].name || label === $scope.elements[i].label) { 
        $scope.isSameTaxonomyElements = true;  
        break; 
       } else { 
        $scope.isSameTaxonomyElements = false;     
       }    
      }   
     } 

これは私のUIです。

<div ng-show="isSameTaxonomyElements"> 
       <div class="col-lg-6 float-left" > 
        <p class="alert-message">No two elements should have same label or name.</p> 
       </div> 
       </div> 

$ timeout、$ applyなどを追加しようとしましたが、まだ動作しません。

+0

もっとコードを投稿できますか? – anoop

答えて

0

基本的に、JavaScript変数は最後に割り当てられた値のみをとります。だからあなたのコードによれば、forループの条件が満たされれば、isSameTaxonomyElementstrueとなり、あなたのループは壊れます(つまりループはありません)。またはisSameTaxonomyElementsfalseになり、ループが早期に終了しない場合は、最終的にisSameTaxonomyElementsfalseになります。

等のコントローラ名、アプリケーション名、

0

あなたの変数は、コントローラのスコープ内にないような基本的なことを確認してください。新しいHTMLページを追加し、新しいコントローラを追加して、新しいルートを作成します。新しいコントローラを追加して機能をテストしてください。 second:古いコントローラのスコープIDを確認します。私はあなたのhtmlがコントローラの範囲にないと思う。

関連する問題