Jquery 发生数据库更改时手动渲染meteor模板
我有一个meteorjs模板,我正在使用它来呈现一些记录。我想做的是,当数据库中发生任何更改时,我想手动调用template render方法。我可以从DOM中只重新加载一个模板来反映更改吗?我的代码是Jquery 发生数据库更改时手动渲染meteor模板,jquery,meteor,datatables,jquery-datatables,meteorite,Jquery,Meteor,Datatables,Jquery Datatables,Meteorite,我有一个meteorjs模板,我正在使用它来呈现一些记录。我想做的是,当数据库中发生任何更改时,我想手动调用template render方法。我可以从DOM中只重新加载一个模板来反映更改吗?我的代码是 <template name="textlines"> <table class="table table-striped table-bordered table-condensed table-hover listing" id="conten
<template name="textlines">
<table class="table table-striped table-bordered table-condensed table-hover listing"
id="content_listing-table">
<thead>
<tr>
<th>Text Lines</th>
</tr>
</thead>
<tbody>
{{#each textline}}
<tr>
<td>
<a href="#" data-id={{_id}} class="edit"> {{texts}}</a>
</td>
</tr>
{{/each}}
</tbody>
</table>
</template>
现在我想在对数据库进行CRUD操作后手动调用这个
模板.textlines.rendered
方法。我不知道我在问什么是对的还是错的,有没有可能。我在数据表方面遇到了一些问题。因此,我希望每次手动刷新模板,将数据库返回的内容添加到dataTable中。谢谢嗯。我怀疑即将发布的Meteor UI版本将使jQuery UI插件在Meteor中正常工作,因此不会吸引人们应用Meteor反模式,但这里有一个可能实现您想要的东西:
Deps.autorun(function () {
var htmlString = Template.textlines({textlines: Textlines.find()});
$("#content_listing-table").replaceWith(htmlString);
$("#content_listing-table").dataTable();
});
有了这一点,您将希望用
替换{textlines}}
。嗯。我怀疑即将发布的Meteor UI版本将使jQuery UI插件在Meteor中正常工作,从而不会吸引人们应用Meteor反模式,但下面是一个可以实现您想要的东西的尝试:
Deps.autorun(function () {
var htmlString = Template.textlines({textlines: Textlines.find()});
$("#content_listing-table").replaceWith(htmlString);
$("#content_listing-table").dataTable();
});
有了这个,您将希望用
替换{{>textlines}}
,看起来您正在使用jQuery DataTables插件,并且您在保持插件维护的DOM随数据库更新时遇到了问题
如果是这样,您可以观察您的集合并使用它们的API进行更改
例如:
Template.textlines.created = function() {
var _watch = Collection.find({});
var handle = _watch.observe({
addedAt: function (doc, atIndex, beforeId) {
$('#content_listing-table').dataTable().fnAddData(doc);
},
changedAt: function(newDoc, oldDoc, atIndex) {
$('#content_listing-table').dataTable().fnUpdate(newDoc, atIndex);
},
removedAt: function(oldDoc, atIndex) {
$('#content_listing-table').dataTable().fnDeleteRow(atIndex);
}
});
};
此StackOverflow中有更多信息。看起来您正在使用jQuery DataTables插件,并且您在使用数据库更新插件维护的DOM时遇到了问题 如果是这样,您可以观察您的集合并使用它们的API进行更改 例如:
Template.textlines.created = function() {
var _watch = Collection.find({});
var handle = _watch.observe({
addedAt: function (doc, atIndex, beforeId) {
$('#content_listing-table').dataTable().fnAddData(doc);
},
changedAt: function(newDoc, oldDoc, atIndex) {
$('#content_listing-table').dataTable().fnUpdate(newDoc, atIndex);
},
removedAt: function(oldDoc, atIndex) {
$('#content_listing-table').dataTable().fnDeleteRow(atIndex);
}
});
};
此StackOverflow中有更多信息。如何定义
textlines
文本行?textlines是模板名称。文本行来自数据库哦,我的意思是textline
如何定义textlines
呢?textlines是模板名。还有短信都来自数据库哦,我是说textline
谢谢你,戴普的唐尼·温斯顿。自动运行它无法访问数据库,意味着`Template.textlines({textlines:textlines.find()});`正在显示未发现。谢谢Donny Winston,在Deps。自动运行它无法访问数据库,意味着`Template.textlines({textlines:textlines.find()});`正在显示未查找。Thanx Jrullman。这两个问题我都问过了。它稍微解决了问题。很高兴听到它!如果您认为此答案对其他可能遇到您的问题的人有帮助,请单击复选标记接受此答案:)Thanx Jrullman。这两个问题我都问过了。它稍微解决了问题。很高兴听到它!如果您认为此答案对可能遇到您的问题的其他人有帮助,请单击复选标记接受此答案:)