Ini biola yang menunjukkan masalahnya. http://jsfiddle.net/Erk4V/1/
Tampaknya jika saya memiliki model ng di dalam sebuah ng-jika, model tersebut tidak berfungsi seperti yang diharapkan.
Saya bertanya-tanya apakah ini bug atau jika saya salah memahami penggunaan yang tepat.
<div ng-app >
<div ng-controller="main">
Test A: {{testa}}<br />
Test B: {{testb}}<br />
Test C: {{testc}}<br />
<div>
testa (without ng-if): <input type="checkbox" ng-model="testa" />
</div>
<div ng-if="!testa">
testb (with ng-if): <input type="checkbox" ng-model="testb" />
</div>
<div ng-if="!someothervar">
testc (with ng-if): <input type="checkbox" ng-model="testc" />
</div>
</div>
</div>
controllerAs
?scope:false
dan saya menambahkanng-if
elemen di sekitar arahan - cakupan awalnya terikat, tetapi mereka menjadi terpisah setelah pengamat memperbarui salah satu nilai ruang lingkup ...Jawaban:
Itu
ng-if
direktif, seperti arahan lain menciptakan lingkup anak. Lihat skrip di bawah ini (atau jsfiddle ini )Jadi, kotak centang Anda mengubah bagian
testb
dalam lingkup anak, tetapi bukan lingkup induk luar.Perhatikan, bahwa jika Anda ingin memodifikasi data dalam lingkup induk, Anda harus memodifikasi properti internal objek seperti di div terakhir yang saya tambahkan.
sumber
$scope.obj = {...}
danng-model="obj.someProperty"
mengatasi batasan ini.Kamu bisa memakai
$parent
untuk merujuk ke model yang ditentukan dalam lingkup induk seperti inisumber
ng-model="$parent.$parent.foo
karena saya sudah berada dalam ruang lingkup denganng-repeat
- apakah ini benar-benar cara terbaik?Anda dapat menggunakan arahan ngHide (atau ngShow) . Itu tidak membuat ruang lingkup anak seperti halnya jika tidak.
sumber
ngIf
kemudian menciptakan ruang lingkup anak? Sepertinya sangat aneh bagi saya.ng-hide
tidak mengubah struktur html. Itu hanya mengubah gaya css.ng-if
lebih kompleks: menghapus dan menyisipkan bagian html tergantung kondisi. Ini menciptakan ruang lingkup anak untuk menyimpan keadaan (setidaknya itu harus menyimpan bagian html tersembunyi).Kami memiliki ini dalam banyak kasus lain, apa yang kami putuskan secara internal adalah untuk selalu memiliki pembungkus untuk pengontrol / arahan sehingga kita tidak perlu memikirkannya. Inilah Anda contoh dengan pembungkus kami.
Semoga ini bisa membantu, Yishay
sumber
Ya, arahan ng-hide (atau ng-show) tidak akan membuat cakupan anak.
Inilah latihan saya:
http://jsfiddle.net/bn64Lrzu/
sumber
Anda dapat melakukannya seperti ini dan fungsi mod Anda akan bekerja dengan sempurna beri tahu saya jika Anda ingin pena kode
sumber