AngularJS指令回调

时间:2014-07-08 19:33:04

标签: angularjs angularjs-directive

我想通过标签上的参数将调用发送回指令,然后在指令内适当时调用该方法。例如,单击按钮时,请在父控制器上调用方法。

我有一个简单的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');

      }
  };
});

2 个答案:

答案 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'});

然后将命名参数绑定到回调属性中使用的相应参数(并非所有参数都需要使用)。