使用铁路由器设置查询变量
Using Iron Router to set a query variable
我正在尝试使用铁路由器调用页面并按路由过滤结果。实际上,该应用程序允许您创建项目。项目包括一个数组,该数组可以有 0 到多个标记:
Item: {
_id: <assigned by application>,
itemTags: []
}
导航栏上的下拉列表从项目中收集所有标记,执行一些清理,然后将它们放入下拉菜单中:
// HTML
<template name="header">
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Select List to View <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="/list/all-list-items">All List Items</a></li>
<li class="divider"></li>
{{#each uniqueTags}}
<li><a href="/list/{{this}}">{{this}}</a></li>
{{/each}}
</ul>
</li>
</ul>
</div>
</div>
</nav>
</template>
// JS
Template.header.helpers({
uniqueTags: function() {
var allItems = Items.find({checked: false});
var uniqueTags = allItems.map((function(allItems) {return allItems.itemTags;}));
uniqueTags = _.flatten(uniqueTags);
uniqueTags = _.compact(uniqueTags);
uniqueTags = _.uniq(uniqueTags);
uniqueTags = _.sortBy(uniqueTags, function (name) {return name;});
return uniqueTags;
}
});
然后路由器将您发送到"/list/"。到目前为止,一切都很好。但随后它分崩离析。我的问题是双重的:
1) 如何适当地获取数组中某处列出了标签的项目的数据上下文?
2) 如何在"列表"页面上显示这些项目?我不知道列表中应该包含什么.js以处理返回的数据上下文
我当前的代码在下面,但它被黑客入侵并且显然无法正常工作:)
// JS - router.js
Router.route('/list/:tagName', {
name: 'list',
data: function() {
return Items.find({$and: [
{checked: false}, {listItem: true}, {itemTags: {$in: ['this.params.tagName']}}
]});
}
});
// HTML - list.html
<template name="list">
<h3><span class="label label-default view-list">List</span></h3>
{{#each listItems}}
{{> item}}
{{/each}}
</template>
// JS - list.js
Template.list.helpers({
listItems: function() {
<somehow use the returned data context>
}
});
感谢您的帮助!
这将起作用
Router.route('/list/:tagName', {
name: 'list',
data: function() {
return { 'listItems' : Items.find({$and: [
{checked: false}, {listItem: true}, {itemTags: {$in: [this.params.tagName]}}
]}) };
}
});
// HTML - list.html
<template name="list">
<h3><span class="label label-default view-list">List</span></h3>
{{#each listItems}}
{{> item}}
{{/each}}
</template>
// You have to write a item template
// JS - list.js
Template.list.helpers({
//listItems: function() {
// this helper is not required
// you could access the data by this.data.listItems
//<somehow use the returned data context>
//}
});
相关文章:
- 查询后websql成功回调无法访问变量
- 使用MEAN堆栈-查询MongoDB并将值作为变量传递
- Mongoose从查询中设置本地变量
- 我想将查询字符串变量添加到JSON名称/值对中
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- 如何在 Meteor 中的 Mongo 查询中使用变量作为字段名称
- 通过 AJAX 调用 PHP 文件,将 $_GET 变量传递到 MySQL 查询中,然后回显到响应中
- 获取重复Get变量的查询字符串值
- 从查询字符串中获取变量,将其与Javascript中的数组匹配
- 如何设置查询字符串中的变量
- 如何在mongoose/node.js中的聚合查询中使用变量
- JQuery的PHP查询数组变量
- 如何在nodejs中的MySQL查询中使用多个变量
- 在LINQ.js查询中传递变量
- 使用铁路由器设置查询变量
- j查询变量的总和
- j查询变量的范围
- 在mongoose中查询变量
- 尝试ajax POST调用PHP将SQL查询变量返回给jquery时出现错误
- 如何处理未定义的查询变量