我正在处理流星应用程序的数据表。 我的问题是当一些字段改变时,所有表再次呈现,如果我在表上的第二页或我按字段顺序,表再次呈现,我回到开头。 我的代码:
Template.adminpage.rendered = function() {
$('#userData').dataTable({
"bDestroy":true,
"aaSorting": [[ 0, "desc" ]],
"bAutoWidth":false,
"bFilter": false,
"aoColumns": [
{ "bVisible": false },
null,
null,
null,
null,
null,
null,
null
],
"aaData": Template.adminpage.arrayUsersAdmin()
});
}
填充表的数组:
Template.adminpage.arrayUsersAdmin=function() {
var adminUsers = allUserData.find({roles: 'basic'});
var arrayUserAdmin = [];
var count=0;
adminUsers.forEach(function(user) {
var idColumn = user._id;
var dateColumn=moment(user.createdAt).format("MMM Do HH:mm");
var usernameColumn=username;
var emailColumn=email;
arrayUserAdmin[count]=[
idColumn,
dateColumn,
usernameColumn,
emailColumn
];
count++;
});
return arrayUserAdmin;
}
服务器上的集合:
if(Meteor.users.find({_id: this.userId}, {roles: 'admin'})){
Meteor.publish("allUserData", function () {
var self = this;
var handle = Meteor.users.find({}).observeChanges({
added: function(id, fields){
self.added("allUsersCollection", id, fields);
},
changed: function(id, fields){
self.changed("allUsersCollection", id, fields);
},
removed: function(id){
self.removed("allUsersCollection", id);
}
});
self.ready();
this.onStop(function() {
handle.stop();
});
});
}
感谢您的时间。
答案 0 :(得分:1)
您可以将reactive: false
作为选项传递给find
,这会禁用基础添加依赖项,如下所示:
Template.adminpage.arrayUsersAdmin=function() {
var adminUsers = allUserData.find({roles: 'basic'}, reactive: false);
// Your code
return arrayUserAdmin;
}
此行为记录为here
或者,如果您希望更新各个字段,则必须自行添加。为此,您可以使用allUserDate.find({roles: 'basic'}).observe
。但是,这将要求您直接编辑HTML,并且非常混乱。更好的选择是完全更改表结构 - 不要使用数据表,使用vanilla HTML表,并使用minimongo查询对数据进行排序。
无论如何,您可以像这样使用观察:
allUserData.find({roles: 'basic'}).observe({
changed: function(newDocument, oldDocument) {
// Update table
}
});