javascript - AngularJS 指令表达式绑定与 `"&"` 函数和参数
问题描述
我正在开发一个多选指令,类似于 AngularJs 的 isteven 指令。我无法解决的是我想包含回调函数,可以传递参数,在控制器中达到它们各自的功能。为此,请使用“&”运算符,但例如,如果我想在控制台中看到一个对象,则只显示“未定义”。
我举个例子:
模板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);
};
该函数返回一个未定义的值。一些帮助?谢谢!
解决方案
使用表达式绑定需要使用本地对象:
<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 来完成。例如,如果表达式是,那么我们可以通过调用asincrement($amount)
来指定金额值。localFn
localFn({$amount: 22})
有关详细信息,请参阅
推荐阅读
- wordpress - 下一个/上一个帖子来自同一类别的链接
- android - 新进程上的Android App快捷方式(从后台杀死应用程序后)是否可以首先进入启动屏幕,然后进入所需的活动
- r - 将 pivottabler 包生成的数据透视表转换为数据框
- python - 需要过滤数据超过某个月份的数据行
- c# - 设置 mecanim 动画播放时间/位置
- javascript - 如何隐藏一页上所有视频的 HTML 视频控件
- symfony - 通过注入加载服务时的问题
- c - 如何使用C计算目录中的文件
- sql - 与另一个表的 SQL 连接导致重复记录
- c - gdb 调试 8 字节间隙是干什么用的?