gpt4 book ai didi

javascript - 铁路由器 获取当前项目?

转载 作者:行者123 更新时间:2023-12-03 10:31:37 24 4
gpt4 key购买 nike

现在我的应用程序中有两条路线。有一个包含想法列表(仅文本项)的主页路线,然后有一个用于显示和编辑想法的路线。

我的问题是编辑想法...我不知道如何真正获得正在编辑的项目并保留更改。我可以使用全局变量,但这几乎肯定是一种黑客行为,而不是“ meteor 方式”(或任何软件中的正确方式,就此而言)。我可以使用 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 的综合文档?我看到了快速入门和指南,但似乎没有任何地方提供对象和方法的直接列表。

最佳答案

我认为你的方法很好。要保存新文本,只需执行以下操作:

Ideas.update(this._id, {$set: {text: newText}});

您可以使用 this._id 因为您已经使用 data: idea 在路由器中设置了数据上下文,因此在您的 Template.ShowIdea.helpers/events “this”指的是具体的想法。

关于你的附带问题:

  1. 您还可以使用template.find()像这样:

    "input div": function (event, template) {
    var newText = template.find("div").text();
    }

但它不太简单,我认为 event.target 更好,因为 DOM 元素已经填充(另请注意 event.target 和之间的 difference event.currentTarget 但您的示例中没有问题)。

  • 除了您提到的指南之外,我从未找到过有关 Iron Router 的任何其他文档。
  • 关于javascript - 铁路由器 获取当前项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29183247/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com