具有隔离范围的AngularJS指令:在函数中传递params

时间:2014-06-05 08:10:42

标签: javascript angularjs angularjs-scope

我想在scope选项中使用& attr,以便为外部控制器公开API。

这是我目前使用的方式:example

问题是我只能在对象内部传递params,这会强制函数绑定有一个特定的键(在链接示例中,test内部hideDialog(test)被问到,因为我需要它键入close({'test':'Letho'})}。

绑定时是否有任何方法可以省略密钥?所以我可以直接使用:

<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog">
  Check out the contents, {{name}}!
</my-dialog>

<a href class="close" ng-click="close('Letho')">&times;</a>

感谢。

1 个答案:

答案 0 :(得分:2)

指令用法:

<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog">

指令:

scope: {
  'onClose': '&'
},
templateUrl: 'my-dialog-close.html',
link: function (scope) {

  scope.close = function (value) {
    var expressionHandler = scope.onClose();
    expressionHandler(value);
  };
}

指令模板:

<a href class="close" ng-click="close('Letho')">&times;</a>

演示: http://plnkr.co/edit/2pxIHoTAP1OeAhmhA9ow?p=preview