Pertanyaan Mengapa pemformat tidak berfungsi dengan ruang lingkup yang terisolasi?


Mengapa pemformat tidak berfungsi dengan ruang lingkup yang terisolasi? Apakah ini bug sudut atau saya melakukan sesuatu yang salah?

Ini berisi ruang lingkup isolat dan tidak berfungsi: http://jsfiddle.net/YbdXQ/56/

 restrict: 'A',
 scope:{},
 link: function(scope, elm, attrs, ctrl) {
      ctrl.$formatters.unshift(function(modelValue) {
          console.log("In formatters" + modelValue);
         return $filter('date')(modelValue);
     });

Ini tidak mengandung isolasi dan ruang lingkup berfungsi dengan baik: http://jsfiddle.net/YbdXQ/57/

 restrict: 'A',
 link: function(scope, elm, attrs, ctrl) {
      ctrl.$formatters.unshift(function(modelValue) {
          console.log("In formatters" + modelValue);
         return $filter('date')(modelValue);
     });

5
2018-01-24 07:18


asal


Jawaban:


Ini tidak ada hubungannya dengan formatters, melainkan fakta itu ngModel tidak lagi memiliki akses ke nilai yang Anda coba lewati. Saat Anda membuat ruang isolasi, myDate tidak lagi tersedia untuk ngModel direktif (karena Anda telah membuat ruang lingkup baru - ruang isolasi - yang tidak memiliki myDate di atasnya). Sebagai bukti, inilah a contoh yang tidak begitu berguna set itu myDate pada ruang lingkup berdasarkan apa yang diteruskan ke ngModel atribut: http://jsfiddle.net/YbdXQ/78/

angular / angular.js # 1069, "Ruang isolasi satu direktif mengisolasi arahan lain pada elemen yang sama," berbicara tentang masalah ini:

Sebagai contoh, perhatikan bagaimana arahan kustom saya mencegah ng-model bekerja

Anda mungkin juga tertarik pertanyaan StackOverflow ini, "ngModel dan komponen dengan ruang lingkup yang terisolasi".


6
2018-01-24 08:11