AngularJS Директива Обратный звонок
Я хотел бы отправить вызов обратно в директиву через параметр тега, а затем вызвать этот метод, когда это уместно, внутри директивы. Например, при нажатии кнопки вызовите метод на родительском контроллере.
У меня есть простой поршень этого не работает
HTML-файл:
<body ng-controller="ParentController">
<h1> Method Arguments </h1>
<h3> open console to view output</h3>
<hello-world onLoadCallback="myCallback(arg1)"></hello-world>
</body>
файл JavaScript:
var app = angular.module("app",[]);
function ParentController($scope) {
$scope.myCallback = function(var1){
console.log("myCallback", var1);
}
}
app.directive('helloWorld', function() {
return {
restrict: 'AE',
template: '<h3>Hello World!!</h3>',
scope:{
onLoadCallback: '&'
},
link: function(scope, element, attrs, dateTimeController) {
console.log('linked directive, not calling callback')
scope.onLoadCallback('wtf');
}
};
});
2 ответа
Решение
Tricky tricky angular, при объявлении аргумента в HTML, он должен использовать случай змеи, вместо совпадения.
Работает:
<hello-world on-load-callback="myCallback(arg1)"></hello-world>
Не работает:
<hello-world onLoadCallback="myCallback(arg1)"></hello-world>
Также обратный вызов должен быть:
scope.onLoadCallback({arg1: 'wtf'});
Затем именованные параметры привязываются к соответствующим параметрам, используемым в атрибуте обратного вызова (не все должны использоваться).