<强> ajduke:bootstrap-tagsinput
我正在使用上面的包来创建标签系统。我用过<select multiple>
来自True Input Value
从上面的链接并将每个标签插入为 Strings
tag array
内.
这就是我的数据库的样子。
Posts
tags //Array
[0] : sometag //String
[1] : sometag //String
[2] : sometag //String
//and so forth..
所以我的问题是... 我想将帖子中的所有标签返回为以下格式,以便当我的用户尝试编辑其帖子时我可以重复使用它来显示标签。
想要的格式
['sometag', 'sometag', 'sometag', and so forth]
编辑1
这就是我到目前为止所做的。
Post_Edit.js
Template.postEdit.rendered = function() {
myTags = Posts.findOne({_id: this._id}).tags.fetch(); //AAA
$('.tagsinput').tagsinput('add', myTags); //From above link API
}
我尝试过其他方法 //AAA
行但我没有运气。我尝试过诸如 Posts.findOne.map...
之类的东西也许我的英语理解能力没有达到标准,但是meteor中的文档并没有帮助我更好地理解。
编辑2
Posts.findOne({_id: "ziZw3wLaxFyz3DYP4"}).tags
我尝试将其放入浏览器控制台并以我想要的格式获取数组。
但问题是,当我使用它时,它无法在我的应用程序中运行。
当我使用Posts.findOne({_id: this._id}).tags
时在我的 postEdit.rendered 中,我收到此浏览器控制台错误。 Cannot read property 'tags' of undefined
Post_Edit.js
Template.postEdit.rendered = function() {
myTags = Posts.findOne({_id: this._id}).tags;
$('.tagsinput').tagsinput('add', myTags); //From above link API
}
我不明白的是为什么它可以在浏览器控制台中工作,但不能在我的 Template.postEdit.rendered 中工作?
最佳答案
您是正确的,调用 Template.postEdit.rendered 时变量 myTags 未定义,因为调用函数时 Posts 数据库尚未完成加载。
myTags = Posts.findOne({_id: this._id}).tags.fetch(); //AAA
解决方案
有多种策略,包括:
订阅完成后更新 DOM
http://docs.meteor.com/#/full/Blaze-TemplateInstance-subscribe集合更改时重新运行该函数
http://docs.meteor.com/#/full/tracker_autorunTemplate.postEdit.rendered = function() { Tracker.autorun(function () { ** NEW LINE ** myTags = Posts.findOne({_id: this._id}).tags; $('.tagsinput').tagsinput('add', myTags); } ** NEW LINE ** }
关于javascript - 从 meteor mongo 返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418588/