我想通过标签上的参数将调用发送回指令,然后在指令内适当时调用该方法。例如,单击按钮时,请在父控制器上调用方法。
我有一个简单的plunker无效
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');
}
};
});
答案 0 :(得分:38)
棘手棘手的角度,在HTML中声明参数时,需要使用蛇案,而不是camelcase来匹配。
使用:
<hello-world on-load-callback="myCallback(arg1)"></hello-world>
不起作用:
<hello-world onLoadCallback="myCallback(arg1)"></hello-world>
答案 1 :(得分:24)
此外,回调需要是:
scope.onLoadCallback({arg1: 'wtf'});
然后将命名参数绑定到回调属性中使用的相应参数(并非所有参数都需要使用)。