callback
Ayrı tutma kapsamı ile belirtilen bir özniteliği kullanan bir form yönergesi var :
scope: { callback: '&' }
İçinde oturduğum ng-repeat
ifade 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 directive
kendi 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 callback
ile ç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).
ng
API ile tutarlıdır, örneğin ng-click="someFunction()"
bir işlevi yürütmeyi değerlendiren bir ifadedir.
$scope.callback
tarafı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.