0

我有一个编译指令,其中包含一个 angular-charts.js 指令。

我注意到,当该图表的容器具有ng-showng-hide作为属性时,图表不会更新——它根本不显示。

这是一个证明这一点的 plunkerlisteningComponent(参见scripts.js指令)

4

2 回答 2

2

这里的问题不在于ng-showng-hide属性。

这背后的根本原因是 DOM 操作。

这里首先执行 ng-show 条件,然后加载指令,因此您的变量值在指令加载后在这里发生变化。

所以尝试使用ng-ifng-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>
于 2015-04-02T23:19:18.703 回答
0

此外,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>
于 2015-04-02T23:32:51.677 回答