Bagaimana memanggil metode yang didefinisikan dalam lingkup anak dari lingkup induknya?
function ParentCntl() {
// I want to call the $scope.get here
}
function ChildCntl($scope) {
$scope.get = function() {
return "LOL";
}
}
angularjs
angularjs-scope
9biru
sumber
sumber
Jawaban:
Anda dapat menggunakan
$broadcast
dari orang tua ke anak:Biola kerja: http://jsfiddle.net/wUPdW/2/
UPDATE : Ada versi lain, kurang digabungkan dan lebih dapat diuji:
Biola: http://jsfiddle.net/uypo360u/
sumber
$scope.$parent
atau di dalam$scope.$parent.$parent
, dll)? Ah, ya: berikan panggilan balik di params! :)$emit
dari seorang anak menjadi orang tua. saya pikir ini adalah waktu untuk memperbarui jawaban saya ..$parent
)$broadcast
dan Anda dapat menghilangkanpingBack
semuanya.Izinkan saya menyarankan solusi lain:
Lebih sedikit kode dan menggunakan pewarisan prototipe.
Memetik
sumber
$scope.obj.get()
fungsi valid.Daftarkan fungsi anak pada orang tua ketika anak tersebut melakukan inisialisasi. Saya menggunakan "sebagai" notasi untuk kejelasan dalam template.
TEMPLATE
PENGONTROL
"Tapi", Anda berkata, "
ng-init
tidak seharusnya digunakan dengan cara ini !". Ya, tapiSaya mengatakan ini adalah penggunaan yang baik untuk itu. Jika Anda ingin downvote saya, silahkan berkomentar dengan alasan! :)
Saya suka pendekatan ini karena ini membuat komponen lebih modular. Binding hanya ada di template, dan artinya
Pendekatan ini lebih mendekati gagasan Tero tentang modularising dengan arahan (perhatikan bahwa dalam contoh modularised,
contestants
diteruskan dari induk ke arahan "anak" DI TEMPLATE).Memang solusi lain mungkin mempertimbangkan penerapan
ChildCntl
sebagai arahan dan menggunakan&
pengikatan untuk mendaftarkaninit
metode.sumber
Anda bisa membuat objek anak.
Di sini anak membuktikan tujuan metode get.
sumber