angularjs - 当函数名是字符串时如何调用函数
问题描述
我有这个:
angular.module("angular-table").directive("atPagination", [
function() {
return {
restrict: "E",
scope: false,
replace: true,
template: paginationTemplate,
link: function($scope, $element, $attributes) {
//The function name
let fn = '$scope.' + $attributes.getDataFn;
console.log($scope.$eval(fn),$attributes,$attributes.getDataFn, "$eval", fn);
}
}
}
我$scope.$eval
在控制台(最后一行)中调用该函数。但是该函数没有被调用。
我正在尝试更改我用于表格和分页的这个库。我正在尝试将一个函数从我的控制器传递到它的指令中,以便在分页中单击下一个时调用它。
我不能以常规方式传递函数,因为它scope
是错误的,我不想改变它。所以我像这样传递它
<at-pagination at-config="tableConfig"
get-data-fn="getPaginatedData()" at-list="personnelsdata">
</at-pagination>
我正在尝试使用该函数调用该函数,$eval
但它不起作用。我究竟做错了什么?
解决方案
app.directive("myDirective", function() {
return {
restrict: "E",
scope: false,
template: paginationTemplate,
link: function(scope, element, attrs) {
//The function name
̶l̶e̶t̶ ̶f̶n̶ ̶=̶ ̶'̶$̶s̶c̶o̶p̶e̶.̶'̶ ̶+̶ ̶ ̶$̶a̶t̶t̶r̶i̶b̶u̶t̶e̶s̶.̶g̶e̶t̶D̶a̶t̶a̶F̶n̶;̶
let fn = attrs.getDataFn;
console.log(scope.$eval(fn));
}
})
该scope.$eval
方法评估 AngularJS 函数,而不是 JavaScript 函数。
有关详细信息,请参阅
推荐阅读
- python - 为什么 K.log 值在 keras 中给了我 nan
- java - 什么是“无法从参数化类型中选择”错误?
- sql-server - ODBC Driver 11 for SQL Server 不支持连接到 SQL Server 2000 或更早版本
- c# - 我们可以在 EF Core 中使用 FromSql 运行 DDL 脚本吗
- python - 在 scikitplot 中仅绘制 1 类与提升曲线中的基线和累积增益图
- sql - 即使右连接表中没有引用,也完全获取左表数据
- c# - 从 Entity Framework Core 3.0 调用存储过程
- python - 排序这个数据集的索引?
- angular - 将生成的 forkJoin 数组传递给 Angular 中的多个组件
- windows - 无法将事件从源 Wins 服务器转发到事件收集器中的自定义事件查看器存储桶