2017-01-13 16 views
-1

ng-show、ng hideが動作しています。しかしNG、このコードが動作している,,しかし、私はそれはNG-IFであることshoud必要ng-show、ng hideが動作しています。しかし、動作していない場合は、

<svg ng-show="abc.chartLoaded" ></svg> 
<div class="loader" ng-hide="abc.chartLoaded"></div> 

に動作しない場合。

<svg ng-if="abc.chartLoaded == 'true'" ></svg> 
    <div class="loader" ng-if="abc.chartLoaded == 'false'></div> 

このコードは機能しません。 と私のjsコードは:

scope.initExplorer = function() { 
    scope.widget.chartLoaded='true';} 

助けてください:

+0

理由だけで、 '' NG-IF = "abc.chartLoaded" を使用しません –

答えて

1

引用符を削除します。以上、偽真と== ==を削除し、より安定した条件のためのブール値を使用します。

<svg ng-if="abc.chartLoaded" ></svg> 
<div class="loader" ng-if="!abc.chartLoaded"></div> 

JS

scope.initExplorer = function() { 
scope.widget.chartLoaded=true;} 
1

あなたinitExplorerscope.widget.chartLoadedを設定しているように見えます。ただし、テンプレートはabc.chartLoadedを参照しています。それはwidget.chartLoadedでなければなりません。

1

JavaScriptのブール値は、引用符のないfalsetrueです。 'true'は文字列とみなされ、同じものではありません。

truthy and falsyの値もあります。if(0){}は、if(false){}と同じものです。

戻るあなたの例に:'true'以来

がtruthyで、ng-show="abc.chartLoaded"ng-if="abc.chartLoaded"はあなたの要素が表示されますされ、trueに解決されます。

混乱を避けるため、falsetrueをお勧めします。

アトリビュートをscopeオブジェクトにアタッチすると、同じ名前のhtmlテンプレートでアトリビュートを使用できるようになります。

あなたのコントローラでこれを試してみてください:

scope.widget = {}; //you need to initialize widget if not done elsewhere 

scope.initExplorer = function() { 
    scope.widget.chartLoaded = true; 
} 

し、HTMLに:

<svg ng-if="widget.chartLoaded" ></svg> 
関連する問題