検索

ホームページ  >  に質問  >  本文

angular.js - Angular ng-hide をすぐに有効にする方法は?

Angular ng-hide はどのようにしてすぐに有効になりますか?
$scope.isHide を設定する必要があり、コンテナの高さと幅に基づいてチャートを描画するなど、コントローラーで後続のコードを実行する前に ng-hide が有効になります。

チャートをダムに隠さずに描くとチャートの高さが狂います。

jqueryで直接非表示にすることで解決できます。angularで行うにはどうすればよいですか?

html
<p class="container">
<p ng-hide='isHide' class="header"></p>
<p id="チャートコンテナ"></p>
</p>

controller
$scope.isHide = true; //有効にする必要がある後、つまりヘッダーを非表示にしてから下方向に実行します
drawChartTo('chart-container');

フレックス レイアウトを使用すると、ヘッダーが非表示になった後、チャート コンテナーがより高くなります。 drawChartこの高さに基づいてグラフを描画します

以下は、この問題を証明するためのデモと基本的な修復方法です:
https://jsfiddle.net/q7t0d2q3/

検索した結果、これには angularjs $digest の関連動作原理が含まれていることがわかりました。この問題を解決するには、1 つはチャートを描画する前に DOM がレンダリングされるのを直接待つこと、もう 1 つはチャートにチャート コンテナーの高さの変化を感知させ、自動的にサイズを変更させることです。最終的には、これは同期と非同期の問題です。

関連情報:
http://tech.endepak.com/blog...
https://blog.brunscopelliti....
http://angular-tips.com/ブログ/...

巴扎黑巴扎黑2800日前774

全員に返信(6)返信します

  • 黄舟

    黄舟2017-05-15 17:14:30

    ここでの正しい方法は、ng-hide を変更するのではなく
    、チャートを描画するメソッドをディレクティブにカプセル化することです

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:14:30

    リーリー

    返事
    0
  • PHPz

    PHPz2017-05-15 17:14:30

    最初に値を割り当て、ng-hide = false、クリックまたは特定のイベントが発生した場合、ng-hide = true、そして同時にチャートを再レンダリングします

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-15 17:14:30

    ng-ifを使えば解決できる気がします

    はこれを DOM から直接削除することですが、ng-hide は CSS を使用して要素を非表示にするだけであり、要素自体は DOM ノードを通じて引き続き見つけることができますng-if 是直接把这个东西从 DOM 中移除,而 ng-hide

    返事
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-15 17:14:30

    以前、同様の問題に遭遇しましたが、ng-show/hide を true/false に設定した後、すぐに有効にならないと感じました。これを試してみてください。

    リーリー

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-15 17:14:30

    <p ng-hide='isHide' class="header ng-hide"></p>
    <p id="chart-container"></p>

    返事
    0
  • キャンセル返事