我正在尝试在我的Meteor项目中实现jQuery DataTables,但我总是遇到以下错误。有人可以告诉我我在这里错过了什么/做错了吗?以下是我的Meteor应用程序代码。感谢。
Uncaught TypeError: Cannot set property 'pagesData' of undefined underscore.js:848
Error: Exception from Tracker recompute function:
Error: Can't call non-function: undefined
at Spacebars.call (http://localhost:3000/packages/spacebars.js?cb20740019f26bdca2faa89ba9c973f618118521:172:13)
at Spacebars.mustacheImpl (http://localhost:3000/packages/spacebars.js?cb20740019f26bdca2faa89ba9c973f618118521:106:25)
at Object.Spacebars.mustache (http://localhost:3000/packages/spacebars.js?cb20740019f26bdca2faa89ba9c973f618118521:110:39)
at null._render (http://localhost:3000/packages/jquery-datatables.js?bf10e73db3f8b2f4afdc77c33ba3c62092556ae7:1010:22)
at doRender (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1853:25)
at http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1795:16
at Object.Blaze._withCurrentView (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:2029:12)
at viewAutorun (http://localhost:3000/packages/blaze.js?7b7ff7ee2ccdccd85a1ad0d8dc9d96193e29e8b0:1794:18)
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)
at new Tracker.Computation (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:206:10)
Project.html - 客户端文件夹
<template name="projectslist">
<div class="projectslist">
<div>
{{> DataTable dtProjects }}
</div>
</div>
</template>
Projectlist.js - 客户端文件夹
Template.projectslist.dtProjects = function() {
return {
id: "my-unique-table-id",
columns: [
{
title: "Name",
data: "name"
}, {
title: "Description",
data: "description"
}, {
title: "Delivery Date",
data: "deliverydate"
}
],
subscription: "dtProjects",
query: {
grade: "A"
}
};
};
Server.js - 服务器文件夹
var ProjectsTable;
ProjectsTable = new DataTableComponent({
subscription: "dtProjects",
collection: Projects
});
ProjectsTable.publish();
Projects.js - 适用于服务器和客户端:
Projects = new Mongo.Collection('projects');
答案 0 :(得分:5)
根据meteor-talk,JQuery dataTables复制了MiniMongo,Spark和Spacebars提供的许多排序和DOM操作函数。因此,即使您可以将样式整理出来(或决定忽略样式),排序和其他功能最终也不会像在DataTables下反应性地更新表时期望的那样。
在2014年7月30日这样说,Austin Rivas,流星jquery-datatables的创建者(meway-创建Meteor数据包的menway:jquery-datatables分支的创建者)在Meteor Google支持中提到基团:
使用jquery-datatables和meteor一起做复制功能并且必须将jquery-datatables dom状态与流星反应性协调起来有很多困难。
因此,检查另一个包或可能检查其他分页方法可能是个好主意:https://github.com/awatson1978/clinical-ui-crud-table
就个人而言,我会推荐Reactive Table https://github.com/ecohealthalliance/reactive-table。它非常稳定,易于实现/配置。
另见:
答案 1 :(得分:1)
删除mrt
版本:
mrt remove jquery-datatables
添加Meteor 0.9+
版本:
meteor add menway:jquery-datatables
然而,似乎它仍然不兼容0.9,因为package.js仍然使用空格键。不过要试一试。
也许值得一看这个扩展名:https://atmospherejs.com/ephemer/reactive-datatables