AngularJS - 在指令回调中包含变量

时间:2015-11-07 14:14:11

标签: javascript angularjs angularjs-directive

我试图让我的指令将参数传递给调用者,但我无法让它工作。

注意:我可以不带参数调用函数。但是只要我添加参数,它就会破坏:

以下是Plunker:(http://embed.plnkr.co/autsgiBlWjz8cX2BL6Sj/preview

供您参考,以下是代码:

//代码在这里     角       .module(' myApp',[]);

angular
  .module('myApp') 
  .directive('myDirective', myDirective)
  .controller('ParentController', ParentController);  

function myDirective() {
  return {
    restrict: 'E',
    controller: {},
    controllerAs: 'vm',
    bindToController: {
      myCallback: '&'
    },
    scope: {},
    template: '<div><button data-ng-click="myCallback({msg:123})Call Callback</button></div>'
  };
}

function ParentController() {
  var self = this;

  self.parentCallback = parentCallback;

  function parentCallback(args) {
    alert('The message is: ' + args.msg);
  }
}

HTML代码:

    

  <head>
    <script data-require="angular.js@*" data-semver="2.0.0-alpha.45" src="https://code.angularjs.org/2.0.0-alpha.45/angular2.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <div data-ng-app="myApp" data-ng-controller="ParentController as ctrl">
      <my-directive my-callback="ctrl.parentCallback(args)"></my-directive>
    </div>
  </body>

</html>

1 个答案:

答案 0 :(得分:0)

来自angular doc

  

通常需要通过以下方式从隔离范围传递数据   表达式到父作用域,这可以通过传递一个映射来完成   将局部变量名和值放入表达式包装器fn中。对于   例如,hideDialog函数接收消息时显示   对话框已隐藏。这是在指令中通过调用指定的   关闭({message:&#39;现在关闭&#39;})。然后是局部变量消息   将在近场表达中提供。

如果您希望以这种方式接收args<my-directive>的模板应如下所示。

<div><button data-ng-click="myCallback({args: {msg:123}})">Call Callback</button></div>