我正在开发一个多重选择指令,类似于AngularJs的isteven指令。 我无法解决的问题是,我想包括回调函数,这些函数可以传递参数,并到达控制器中各自的函数。为此,请使用“&”运算符,但是例如,如果我希望在控制台中看到对象,则仅显示“ undefined”。
我举个例子:
模板HTML:
<li ng-repeat="data in inputData">
<span ng-click="onItemClick()">{{data.name}}</span>
</li>
JS(指令):
debFrontApp.directive('debSelect', function () {
return {
restrict: "AE",
transclude: true,
templateUrl: function (element, attrs) {
if(!attrs.basePath){
attrs.basePath = "/assets/debfront";
}
return attrs.basePath + "/templates/debselect.html";
},
scope: {
multiSelect: '=',
selectName: '@',
inputData: '=inputData',
outputData: '=outputData',
onItemClick: '&'
}
};
});
JS(控制器)
$scope.testfuctionBye = function(data){
console.log(data);
};
此函数返回一个未定义的值。 一些帮助? 谢谢!
答案 0 :(得分:0)
使用表达式绑定时,需要使用一个本地对象:
<li ng-repeat="data in inputData">
<span ng-click="onItemClick({$event: data})">{{data.name}}</span>
</li>
用法:
<deb-select on-item-click="vm.onClick($event)" input-data="vm.dataArr">
</deb-select>
调用表达式绑定时,locals对象定义$event
的值。
从文档中:
&
或&attr
-提供了一种在父作用域的上下文中执行表达式的方法。如果未指定attr名称,则假定属性名称与本地名称相同。给定<my-component my-attr="count = count + value">
和隔离范围定义scope: { localFn:'&myAttr' }
,隔离范围属性localFn
将指向count = count + value
表达式的函数包装。通常,需要将数据从隔离范围通过表达式传递到父范围。这可以通过将局部变量名称和值的映射传递到表达式包装器fn中来完成。例如,如果表达式为increment($amount)
,则可以通过将localFn
称为localFn({$amount: 22})
来指定金额值。
有关更多信息,请参见