Saya memiliki arahan bentuk yang menggunakan callback
atribut yang ditentukan dengan cakupan terisolasi:
scope: { callback: '&' }
Itu duduk di dalam ng-repeat
sehingga ekspresi yang saya berikan termasuk id
objek 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 directive
dirinya sendiri.
Apakah ada ekspresi sudut yang akan memungkinkan ini $scope.callback(arg2)
:, mengakibatkan callback
dipanggil 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).
ng
API misalnya ng-click="someFunction()"
adalah ekspresi yang mengevaluasi untuk mengeksekusi fungsi.
$scope.callback
diatur 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.