callbackAyrı tutma kapsamı ile belirtilen bir özniteliği kullanan bir form yönergesi var :
scope: { callback: '&' }
İçinde oturduğum ng-repeatifade id, nesnenin geri çağırma işlevine argüman olarak içerdiği şekilde oturur :
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Yönerge ile işim bittiğinde $scope.callback(), denetleyici işlevinden çağırır . Çoğu durumda bu iyi ve yapmak istediğim tek şey, ama bazen directivekendi içinden başka bir argüman eklemek istiyorum .
Bu izin verecek bir açısal ifadesi var mıdır: $scope.callback(arg2), sonuçlanan callbackile çağrılan arguments = [item.id, arg2]?
Değilse, bunu yapmanın en güzel yolu nedir?
Bunun işe yaradığını gördüm:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
İle
scope { callback: '=', callbackArg: '=' }
ve direktif çağrısı
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Ama bence özellikle düzgün ve ayrı bir kapsamda fazladan şeyler koymayı içeriyor.
Daha iyi bir yol var mı?
Burada Plunker oyun alanı (konsolu açın).
ngAPI ile tutarlıdır, örneğin ng-click="someFunction()"bir işlevi yürütmeyi değerlendiren bir ifadedir.
$scope.callbacktarafından ayarlanır callback="someFunction"özniteliği ve scope: { callback: '=' }direktif tanımı nesnesinin özelliği. $scope.callback olan daha sonraki bir tarihte çağrılacak bir işlev. Asıl öznitelik değeri açıkça bir dizedir - bu her zaman HTML'de geçerlidir.