我试图让我的指令将参数传递给调用者,但我无法让它工作。
注意:我可以不带参数调用函数。但是只要我添加参数,它就会破坏:
以下是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>
答案 0 :(得分:0)
通常需要通过以下方式从隔离范围传递数据 表达式到父作用域,这可以通过传递一个映射来完成 将局部变量名和值放入表达式包装器fn中。对于 例如,hideDialog函数接收消息时显示 对话框已隐藏。这是在指令中通过调用指定的 关闭({message:&#39;现在关闭&#39;})。然后是局部变量消息 将在近场表达中提供。
如果您希望以这种方式接收args
,<my-directive>
的模板应如下所示。
<div><button data-ng-click="myCallback({args: {msg:123}})">Call Callback</button></div>