У меня есть директива формы, которая использует указанный атрибут callback
с областью выделения:
scope: { callback: '&' }
Он находится внутри ng-repeat
, поэтому выражение, которое я передаю, включает в себя id
объекта в качестве аргумента функции обратного вызова:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Когда я закончил с директивой, он вызывает $scope.callback()
из своей функции контроллера. В большинстве случаев это нормально, и все, что я хочу сделать, но иногда я хотел бы добавить еще один аргумент из самого directive
.
Есть ли выражение angular, которое позволит это: $scope.callback(arg2)
, в результате чего callback
вызывается с помощью arguments = [item.id, arg2]
?
Если нет, то какой самый простой способ сделать это?
Я обнаружил, что это работает:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
С
scope { callback: '=', callbackArg: '=' }
и директивный вызов
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Но я не думаю, что это особенно опрятно, и это включает в себя добавление лишних вещей в область выделения.
Есть ли лучший способ?
Плункерная площадка здесь (консоль открыта).