Meteor - Iron Router 的多个数据上下文
Meteor - Multiple data contexts with Iron Router
我刚开始使用 Meteor 和 Iron Router。
我在这里尝试使用两个数据上下文,但显然我做错了。我用谷歌搜索了一下,但似乎这不是一个很常见的问题,但我想应该可以传递两个或更多数据上下文,对吧?
这是我的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});
});
我试图在其中使用两种上下文中的数据的模板(一种用于填充下拉列表,另一种用于显示所选包的数据
<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}}
引用数据上下文。
我刚开始使用 Meteor 和 Iron Router。
我在这里尝试使用两个数据上下文,但显然我做错了。我用谷歌搜索了一下,但似乎这不是一个很常见的问题,但我想应该可以传递两个或更多数据上下文,对吧?
这是我的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});
});
我试图在其中使用两种上下文中的数据的模板(一种用于填充下拉列表,另一种用于显示所选包的数据
<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}}
引用数据上下文。