铁路由器获取当前项目
Iron Router Get Current Item?
现在我的应用程序中有两条路由。有一个主页路线,有一个想法列表(只是文本项),然后有一个显示和编辑想法的路线。
我的问题是编辑想法。。。我不知道如何真正获得正在编辑的项目并保持更改。我可以使用全局变量,但这几乎可以肯定是一种破解,而不是"流星方式"(或任何软件中的正确方式)。我可以使用Session
,但这对我来说似乎也不太正确。。。我得到的印象是Session
只是视觉上的东西(比如暂时隐藏东西)
到目前为止,我有以下相关代码:
Router.route('/idea/:_id', function() {
var idea = Ideas.findOne({_id: this.params._id});
// Should I save this.params._id in a Session?
// Is that "the meteor way"?
this.render('ShowIdea', {data: idea});
}, {
name: 'idea.show'
});
Template.ShowIdea.events({
"input div": function (event) {
var newText = $(event.target).text();
console.log("newText: " + newText);
// this event gets called at the right time, and I can see the new text,
// but how do I know which item to save it on?
}
});
模板没有什么可看的,但它在这里:
<template name="ShowIdea">
<div contentEditable="true">{{text}}</div>
</template>
此外,还有两个附带问题:
1-$(event.target).text()
是提取新文本的最佳方式吗?我想不出其他什么了,但对我来说似乎有点冗长。
2-是否有一些关于Iron Router的全面文档?我看到了一个QuickStart和一个Guide,但似乎没有一个直接的对象和方法列表
我认为你的方法很好。要保存新文本,只需执行以下操作:
Ideas.update(this._id, {$set: {text: newText}});
您可以使用this._id
,因为您已经使用data: idea
在路由器中设置了数据上下文,所以在您的Template.ShowIdea.helpers/events
中,"this"指的是特定的想法。
关于你的附带问题:
你也可以像这样使用template.find():
"input div": function (event, template) { var newText = template.find("div").text(); }
但它不那么简单,我认为event.target
更好,因为DOM元素已经填充(也要注意event.target
和event.currentTarget
之间的区别,但在您的示例中没有问题)。
- 除了你提到的指南之外,我从未找到任何其他关于Iron Router的文档
相关文章:
- 如何获取不属于我项目的上一页的URL
- AngularJS获取范围中的选定项目
- 获取中继器控件ASP.Net中显示的单击项目文本框
- 从下拉列表中获取所选项目,并将其保存到php变量中
- 如何根据单击的项目在modalbox中获取值
- 获取每个项目中不为 null 的最后一个项目
- 获取唯一的项目-Handlebars
- 获取特定视图的项目计数
- 如何在angular js中的select选项中获取所选项目id
- 铁路由器获取当前项目
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- Lodash 从与值数组不匹配的数组中获取项目
- 在 JavaScript 对象中添加子对象时获取“无法设置未定义的属性'项目'”
- 获取项目的顺序 jQuery 可排序并设置它们的顺序
- 语义 UI 手风琴获取打开事件中打开的项目的索引
- 拉力赛:有没有一种简单的方法来获取项目组合项目下的所有用户故事
- 如何过滤推特流API订阅源,只获取与新闻相关的项目
- 如何在Sonarqube Javascript扩展中获取项目路径
- jQuery.数据集's或获取's的项目不对
- Uikit.可嵌套组件-如何从移动的项目获取id