gpt4 book ai didi

jquery - 让 yadcf(用于数据表)在 Angular 2 (jQuery 3) 中工作

转载 作者:行者123 更新时间:2023-12-01 04:02:02 26 4
gpt4 key购买 nike

我一直在为数据表库使用很棒的插件 yadcf。我一直在 ASP.NET MVC 5 的 View 中使用它,没有任何问题。我们目前正在将应用程序迁移到 Angular 2,并使用 ASP.NET Web Api 提供数据。

我已经以最小的更改移动了代码,并通过将对数据表库的引用放入托管 Angular 应用程序的 index.html 页面上的脚本标记中,成功地使数据表正常工作。

然后,我从托管该表的组件中运行下面的数据表初始化代码。

但是,每当我尝试对 yadcf.init 执行相同操作时,我都会得到:

Uncaught (in promise): TypeError: Cannot read property 'replace' of undefined 

它崩溃了。

ngOnInit(){
this.table = $('#studyList')
.DataTable({
serverSide: true,
responsive: true,
processing: true,
ajax: {........
........
}
.........
});

// runs fine to here and datatables works when the following is commented out
// but crashes as soon as i try and initialise yadcf from
// from within the component as follows.

yadcf.init(this.table,
[
{
column_number: 5,
filter_type: 'multi_select',
select_type: 'select2',
data: [
{ label: 'Included', value: 1 },
{ label: 'Excluded', value: 2 },
{ label: 'Insufficiently Screened', value: 4 }
]
}
]);
// This causes "Uncaught (in promise): TypeError:
// Cannot read property 'replace' of undefined" error
}

真的不想在新应用程序中失去过滤功能,因此将非常感谢您的帮助!

是否有一些关键可以让我缺少的 Angular 2 发挥作用?

编辑

看起来该错误实际上是由使用 jquery 3 引起的(见下文)。

最佳答案

我意识到这个错误与 Angular 完全无关(它只是被 Angular 重新抛出)!

我有一个不同版本的 jQuery(原始 MVC 应用程序中的2.2.4,但在索引中引用了3.1.0)。我的 Angular 应用程序的 html)

事实证明 yadcf 不能很好地与 jQuery 3 配合使用。

特别是在第一行内yadcf.init(oTable, options_arg, params)函数进行以下分配。

function init(oTable, options_arg, params) {
var instance = oTable.settings()[0].oInstance;

// ......
// it is assumed that variable instance has a property called selector
// but this is not the case in jquery 3 so all occurrences of
// "instance.selector" later in the function are undefined.
// ......

$(document).data(instance.selector + "_filters_position", params.filters_position);

if ($(instance.selector).length === 1) {
setOptions(instance.selector, options_arg, params);
initAndBindTable(instance, instance.selector, 0, oTable);
} else {
for (i; i < $(instance.selector).length; i++) {
$.fn.dataTableExt.iApiIndex = i;
selector = instance.selector + ":eq(" + i + ")";
setOptions(instance.selector, options_arg, params);
initAndBindTable(instance, selector, i, oTable);
}
$.fn.dataTableExt.iApiIndex = 0;
}
}

这意味着 yadcf 尚未初始化,因此稍后调用 yadcf.exFilterColumn(table_arg, col_filter_arr, ajaxSource) 时,会抛出错误 Cannot read property 'replace' of undefined .

关于jquery - 让 yadcf(用于数据表)在 Angular 2 (jQuery 3) 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39616477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com