我有一个编译指令,其中包含一个 angular-charts.js 指令。
我注意到,当该图表的容器具有ng-show
或ng-hide
作为属性时,图表不会更新——它根本不显示。
这是一个证明这一点的 plunkerlisteningComponent
(参见scripts.js
指令)
我有一个编译指令,其中包含一个 angular-charts.js 指令。
我注意到,当该图表的容器具有ng-show
或ng-hide
作为属性时,图表不会更新——它根本不显示。
这是一个证明这一点的 plunkerlisteningComponent
(参见scripts.js
指令)
这里的问题不在于ng-show和ng-hide属性。
这背后的根本原因是 DOM 操作。
这里首先执行 ng-show 条件,然后加载指令,因此您的变量值在指令加载后在这里发生变化。
所以尝试使用ng-if
ng-show。它会解决你的问题。
更改您的 listner.html 模板。
<h4>listeningComponent Directive</h4>
<div class="listener">
<p>
{{listenertext}}
</p>
<div class="bar-chart-box" ng-if="loading === false">
Bar Graph with ng-show<br>
<canvas class="chart chart-bar"
data="chartData.data"
labels="chartData.labels"
series="chartData.series">
</canvas>
</div>
<hr>
<div class="bar-chart-box">
Bar Graph without ng-show<br>
<canvas class="chart chart-bar"
data="chartData.data"
labels="chartData.labels"
series="chartData.series">
</canvas>
</div>
</div>
此外,ng-switch
似乎运作良好。
<h4>listeningComponent Directive</h4>
<div class="listener" ng-switch="loading">
<p>
{{listenertext}}
</p>
<div class="bar-chart-box" ng-switch-when="false">
Bar Graph with ng-show<br>
<canvas class="chart chart-bar"
data="chartData.data"
labels="chartData.labels"
series="chartData.series">
</canvas>
</div>
<hr>
<div class="bar-chart-box">
Bar Graph without ng-show<br>
<canvas class="chart chart-bar"
data="chartData.data"
labels="chartData.labels"
series="chartData.series">
</canvas>
</div>
<!-- can also have a loading state using this method -->
<div class="loading" ng-switch-when="true"></div>
</div>