Saya memiliki arahan bentuk yang menggunakan callbackatribut yang ditentukan dengan cakupan terisolasi:
scope: { callback: '&' }
Itu duduk di dalam ng-repeatsehingga ekspresi yang saya berikan termasuk idobjek sebagai argumen untuk fungsi callback:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Ketika saya sudah selesai dengan arahan, ia memanggil $scope.callback()dari fungsi pengontrolnya. Untuk sebagian besar kasus, ini baik-baik saja, dan hanya itu yang ingin saya lakukan, tetapi kadang-kadang saya ingin menambahkan argumen lain dari dalam directivedirinya sendiri.
Apakah ada ekspresi sudut yang akan memungkinkan ini $scope.callback(arg2):, mengakibatkan callbackdipanggil dengan arguments = [item.id, arg2]?
Jika tidak, apa cara paling rapi untuk melakukan ini?
Saya menemukan bahwa ini berfungsi:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
Dengan
scope { callback: '=', callbackArg: '=' }
dan panggilan arahan
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Tapi saya tidak berpikir itu sangat rapi dan melibatkan memasukkan barang-barang ekstra dalam ruang lingkup isolasi.
Apakah ada cara yang lebih baik?
Bermain plunker di sini (buka konsol).
ngAPI misalnya ng-click="someFunction()"adalah ekspresi yang mengevaluasi untuk mengeksekusi fungsi.
$scope.callbackdiatur oleh callback="someFunction"atribut dan scope: { callback: '=' }properti objek definisi direktif. $scope.callback adalah fungsi yang dipanggil di kemudian hari. Atribut yang sebenarnya nilai jelas string - yang selalu terjadi dengan HTML.