我最近遇到了一个问题,我的路由器似乎没有路由名称的集合。
我有一个名为 Nodes 的集合。在这个集合中,有许多来自许多节点的读取,每个节点中都有各种数据。尽管这些节点的名称属性不是唯一的(使用 simpleSchema)。这是特定节点可以发送许多数据点。稍后我将从集合中绘制这些数据。节点插入是
var sampleInput_4 ={
name : "Tulsa Node",
longitude : -95.982,
latitude : 36.137,
humidity : 78,
tem p: 80,
dew : 20,
pressure : 32,
speed : 12,
direction : 60
};
但是可能有数千个这样的插入。并插入数千个不同的节点。我发布了整个节点集合,并在侧边栏中的 js 文件中订阅了 Created 到整个集合。这只是为了测试这个问题。这是侧边栏js文件。
Template.sidebar.helpers({
nodes: function(){
var col= Nodes.find().fetch();
return _.uniq(_.pluck(col,'name'));
}
});
Template.sidebar.onCreated(function () {
this.subscribe('nodes');
});
这在 HTML 加载我想要的唯一名称时效果很好。
{{#each nodes}}
<li>
<a href="{{pathFor 'NodePage'}}">
{{this}}
</a>
</li>
{{/each}}
但是,这并没有按照我想要的方式进行。当我这样做时,实际上没有路线。我希望路线是 /name 的唯一名称。哪个文件的哪个名称无关紧要。只要它是我点击的那个,它就是任何唯一的名称。这里是路由器
Router.route('/:_id', {
name : 'NodePage',
data : function() { return Nodes.findOne(
// this refers to the currently matched
//route.this.params access parts of route
this.params._id);
}
});
虽然如果我把
return Nodes.find();
在侧边栏 js 文件中用于返回路线有效。我错过了 Iron 路由器的一些基本方面吗?此后的侧边栏也只返回整个集合中的每个 [object]。尽管您可以单击它们,但路由器可以对它们起作用。