Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模板不使用';用{{{with}包装时不会出现?_Javascript_Meteor - Fatal编程技术网

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路由器代码方面存在一些缺陷,甚至旧版本也使用了现在已弃用的路由器包。因此,请确保您使用的是最新版本。