Javascript 模板不使用';用{{{with}包装时不会出现?
我在看这本书 由于某种原因,Javascript 模板不使用';用{{{with}包装时不会出现?,javascript,meteor,Javascript,Meteor,我在看这本书 由于某种原因,edit_post.html中的内容不会与{{{with post}}一起显示: <template name="postEdit"> {{#with post}} <form class="main"> <div class="control-group"> <label class="control-label" for="url">URL</label>
edit_post.html
中的内容不会与{{{with post}}
一起显示:
<template name="postEdit">
{{#with post}}
<form class="main">
<div class="control-group">
<label class="control-label" for="url">URL</label>
<div class="controls">
<input name="url" type="text" value="{{url}}" placeholder="Your URL"/>
</div>
</div>
.
.
.
</form>
{{/with}}
</template>
route.js:
this.route('postEdit', {
path: '/posts/:_id/edit',
data: function() { return Posts.findOne(this.params._id); }
});
如果我删除{{#with post}}
,模板就会显示出来
我不确定这是书中的错误,还是我做错了什么。我是流星初学者,所以我不知道
有没有解决这个问题的建议?模板帮助程序
post
调用一个从未设置过的会话变量,因此我认为findOne()返回一个falsy值。因此{{#with post}}正确地阻止了模板的显示。没有{{#with post}},您的模板就能够显示路由器中数据
函数的帖子。您将调用findOne()两次查找相同的数据,但这两种方法都可以用于获取模板所需的数据
如果要使用{{{#with}},可以将route.js更改为:
this.route('postEdit', {
path: '/posts/:_id/edit',
before: function() { Session.set( "currentPostId", this.params._id ); }
});
模板助手
post
调用一个从未设置过的会话变量,因此我认为findOne()返回一个falsy值。因此{{#with post}}正确地阻止了模板的显示。没有{{#with post}},您的模板就能够显示路由器中数据
函数的帖子。您将调用findOne()两次查找相同的数据,但这两种方法都可以用于获取模板所需的数据
如果要使用{{{#with}},可以将route.js更改为:
this.route('postEdit', {
path: '/posts/:_id/edit',
before: function() { Session.set( "currentPostId", this.params._id ); }
});
我正在查看书中的代码,看不到您所指的代码块 事实上,它不应该存在,因为模板的数据上下文已经由路由器设置 您的模板助手(post)不应该在那里,因为它是不必要的,而且事实上没有已设置的会话变量,所以get会按预期返回null
只需删除您的助手和with块,并让iron router提供数据上下文即可。我正在查看书中的代码,但看不到您所指的with块 事实上,它不应该存在,因为模板的数据上下文已经由路由器设置 您的模板助手(post)不应该在那里,因为它是不必要的,而且事实上没有已设置的会话变量,所以get会按预期返回null
只需删除您的帮助程序和with块,并让iron router提供数据上下文即可。如果键入
Session.get(“currentPostId”)
,控制台中有什么内容?在显示的代码中,您没有设置它。@user728291我得到:Session.get(“currentPostId”);未定义
奇怪,我没有跳过书中的任何内容。我现在该怎么办?@user728291可能这本书弄错了,应该是return Posts.findOne(Session.set('currentposted')代码>而不是?哦,等等,我现在很困惑。如果您键入Session.get(“currentPostId”)
,控制台中会有什么?在显示的代码中,您没有设置它。@user728291我得到:Session.get(“currentPostId”);未定义
奇怪,我没有跳过书中的任何内容。我现在该怎么办?@user728291可能这本书弄错了,应该是return Posts.findOne(Session.set('currentposted')代码>而不是?哦,等等,我现在很困惑。谢谢!奇怪的是,也许我的是这本书的旧版本?嗯,如果你不是在线阅读(也许是从epub或pdf),那可能是真的。我只是在网上再次检查,没有with block。但关键是,我希望您理解路由器如何设置数据上下文,以及为什么您实际上不需要post助手。如果您有任何问题,请告诉我。它位于,但您显然需要为此购买一个帐户。在线版本与评论讨论、git签出、章节部署、视频等交互。该书的旧版本在iron路由器代码方面存在一些缺陷,甚至旧版本也使用了现在已弃用的路由器包。因此,请确保您使用的是最新版本。谢谢!奇怪的是,也许我的是这本书的旧版本?嗯,如果你不是在线阅读(也许是从epub或pdf),那可能是真的。我只是在网上再次检查,没有with block。但关键是,我希望您理解路由器如何设置数据上下文,以及为什么您实际上不需要post助手。如果您有任何问题,请告诉我。它位于,但您显然需要为此购买一个帐户。在线版本与评论讨论、git签出、章节部署、视频等交互。该书的旧版本在iron路由器代码方面存在一些缺陷,甚至旧版本也使用了现在已弃用的路由器包。因此,请确保您使用的是最新版本。