Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Meteor-使用Iron路由器的多数据上下文_Meteor_Iron Router - Fatal编程技术网

Meteor-使用Iron路由器的多数据上下文

Meteor-使用Iron路由器的多数据上下文,meteor,iron-router,Meteor,Iron Router,我刚开始使用Meteor和Iron路由器 这里我试图使用两种数据上下文,但显然我做得不对。我在谷歌上搜索过,但这似乎不是一个很常见的问题,但我想应该可以传递两个或更多的数据上下文,对吗 这是我的routing.js Router.route('/package/:_id', function () { //Returns the selected/clicked package var package = Packages.findOne({_id: this.param

我刚开始使用Meteor和Iron路由器

这里我试图使用两种数据上下文,但显然我做得不对。我在谷歌上搜索过,但这似乎不是一个很常见的问题,但我想应该可以传递两个或更多的数据上下文,对吗

这是我的routing.js

Router.route('/package/:_id', function () {
      //Returns the selected/clicked package
      var package = Packages.findOne({_id: this.params._id});
      //Returns all items in Items collection.
      var listItems = Items.find();
      this.render('PackageDetails', {data: package, listItems});
    });
在我的模板中,我试图使用两个上下文中的数据—一个用于填充dropdownlist,另一个用于显示所选包的数据

<template name="PackageDetails">
    <label class="label label-default">Item type: </label><p>{{ item }}</p>
    <label class="label label-default">Quantity: </label><p>{{ quantity }}</p>
    <label class="label label-default">Id: </label><p>{{ _id }}</p>

    <form class="change-state">
        <div class="input-group">
        {{> sAlert}}
        <select class="form-control" name="state">
            <option selected="true" disabled>Select State</option>
            {{#each states}}
                <option>{{name}}</option>
            {{/each}}
        </select>
        </div><br>

        <div class="input-group">
        <input type="submit" value="Change state" class="btn btn-success"/>
        </div>
    </form><br>
</template>
我通过在返回数据的模板上使用助手解决了这个问题,但我更愿意从路由中获取所有数据


有什么想法吗?是否有更好的方法来实现这一点,或者是否有可能通过Iron Router传递两个数据上下文,在这种情况下,如何传递?

您的数据对象声明语法错误,应该是:

this.render('PackageDetails', {
  data: {
    package: package,
    listItems: listItems
  }
});

然后在模板中,可以使用{{package.property}和{{each listItems}}引用数据上下文。

谢谢!我已经尝试了一些不同的语法,实际上类似于这个,但表面上不是这样的。顺便说一句,你知道this.route和Router.route之间的区别吗?我猜它基本上是旧语法还是新语法?。看到他们两个,但不知道使用哪一个…除了使用Router.route没有区别,这是较新的语法。