我在从路线访问数据时遇到问题。
<link href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" rel="stylesheet"/>
<style>
.debug {
border: solid;
border-color: red;
}
</style>
<div class="row">
<div class="six columns debug" style="height: 100px;">A</div>
<div class="six columns debug" style="height: 300px;">B</div>
</div>
<div class="row">
<div class="six columns debug" style="height: 100px;">C</div>
<div class="six columns debug" style="height: 300px; display:none;">D</div>
</div>
Router.route('/view/:_id', {
name: 'locationView',
data: function() { return Locations.findOne(this.params._id); }
});
是我订阅的MongoDB Collection。我可以通过另一个模板上的辅助方法访问它而不会出现问题。它有名称,地址等对象。
Locations
Application hosted on meteor.com
在首页上,您可以看到Locations中的条目可以通过辅助方法从其他模板访问。那么为什么我不能通过路径中的数据对象访问它们呢?
问题是通过mongo shell添加对象。这导致ObjectID(xxx)内容出现在对象的_id中。
我通过收集方法'insert'添加了一些测试对象,一切正常!
答案 0 :(得分:1)
我刚试过你的申请,我看到了这个网址:
http://mhaehnel-compass.meteor.com/view/ObjectID(%22554e58c15eb2cd41fc085c0e%22)
ObjectID()部分仅适用于mongodb,不应该在你的网址中。这就是为什么meteor没有做你想要的事情。这可以是一个如何设置链接到locationView路径
的示例{{pathFor&#39; locationView&#39; _id = this._id}}
希望这有帮助
答案 1 :(得分:1)
路线中定义的data
存储在您的模板实例ergo Template.instance().data
中。您也可以使用onRendered
:
this.data
中访问它
Template.locationView.onRendered(function () {
var data = this.data;
});
答案 2 :(得分:0)
问题是通过mongo shell添加对象。这导致ObjectID(xxx)内容出现在对象的_id中。
我通过收集方法'insert'添加了一些测试对象,一切正常!