cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Bagaimana untuk menjadikan Angular ng-hide berkuat kuasa serta-merta?

Bagaimanakah Angular ng-hide berkuat kuasa serta-merta?
Saya perlu menetapkan $scope.isHide dan ng-hide berkuat kuasa sebelum melaksanakan kod seterusnya dalam pengawal, seperti melukis carta berdasarkan ketinggian dan lebar bekas.

Melukis carta tanpa menyembunyikannya pada dom akan menyebabkan ketinggian carta menjadi salah.

Ia boleh diselesaikan dengan menyembunyikannya terus dengan jquery. Bagaimana untuk melakukannya dengan sudut?

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

pengawal
$scope.isHide = true; //Selepas ia perlu berkuat kuasa, iaitu, sembunyikan pengepala dan kemudian laksanakan ke bawah
drawChartTo('cart-container');

Menggunakan reka letak fleksibel, selepas pengepala disembunyikan, bekas carta akan menjadi lebih tinggi. drawChartUntuk melukis carta berdasarkan ketinggian ini

Berikut ialah demo dan kaedah pembaikan asas untuk membuktikan masalah ini:
https://jsfiddle.net/q7t0d2q3/

Selepas mencari, saya mendapati bahawa ia melibatkan prinsip pengendalian angularjs $digest yang berkaitan. Untuk menyelesaikan masalah ini, satu adalah dengan terus menunggu DOM untuk diberikan sebelum melukis carta, dan yang lain adalah untuk membiarkan carta merasakan perubahan ketinggian bekas carta dan mengubah saiz secara automatik. Dalam analisis akhir, ia adalah masalah penyegerakan dan tak segerak.

Maklumat berkaitan:
http://tech.endeepak.com/blog...
https://blog.brunoscopelliti....
http://angular-tips.com/ blog/...

巴扎黑巴扎黑2781 hari yang lalu766

membalas semua(6)saya akan balas

  • 黄舟

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

    Cara yang betul di sini bukanlah untuk mengubah suai ng-hide
    tetapi untuk merangkum kaedah anda melukis carta ke dalam arahan

    balas
    0
  • 曾经蜡笔没有小新

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

     ng-hide="true"

    balas
    0
  • PHPz

    PHPz2017-05-15 17:14:30

    Tetapkan nilai dahulu, ng-hide = palsu, apabila diklik atau peristiwa tertentu berlaku, ng-hide = benar, dan tunjukkan semula carta pada masa yang sama

    balas
    0
  • 巴扎黑

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

    Saya rasa anda boleh menyelesaikannya dengan menggunakan ng-ifng-if 就可以解决

    ng-if 是直接把这个东西从 DOM 中移除,而 ng-hide

    ng-if secara langsung mengalih keluar perkara ini daripada DOM, manakala ng-hide hanya menggunakan CSS untuk menyembunyikan elemen, dan elemen itu sendiri masih boleh diakses melalui Nod DOM dijumpai 🎜

    balas
    0
  • 给我你的怀抱

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

    Saya menghadapi masalah yang sama sebelum ini Saya merasakan bahawa selepas ng-show/hide ditetapkan kepada benar/salah, ia tidak berkuat kuasa serta-merta. Cuba ini.

    $scope.isHide = true; 
    $timeout(function(){drawChartTo('chart-container')})

    balas
    0
  • 淡淡烟草味

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

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

    balas
    0
  • Batalbalas