Rumah > Soal Jawab > teks badan
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/...
黄舟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
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
巴扎黑2017-05-15 17:14:30
Saya rasa anda boleh menyelesaikannya dengan menggunakan ng-if
ng-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 🎜给我你的怀抱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')})
淡淡烟草味2017-05-15 17:14:30
<p ng-hide='isHide' class="header ng-hide"></p>
<p id="cart-container"></p>