路由数据无法在模板中访问
Route data not accessible in template
我从路由访问数据时遇到问题。
路由器
Router.route('/view/:_id', {
name: 'locationView',
data: function() { return Locations.findOne(this.params._id); }
});
Locations
是我订阅的 MongoDB 合集。我可以通过另一个模板上的辅助方法毫无问题地访问它。它有名称、地址等对象
模板
<template name="locationView">
<h1>{{name}}</h1>
</template>
演示
Application hosted on meteor.com
在首页上,您可以看到 Locations 中的条目可以通过辅助方法从其他模板访问。那么为什么我不能通过路由中的数据对象访问它们?
解决方案
问题是通过 mongo shell 添加对象。这导致 ObjectID(xxx) 内容出现在对象的 _id 中。
我通过收集方法添加了一些测试对象'insert',一切正常!
我刚试过你的申请,我看到了这个 url:
http://mhaehnel-compass.meteor.com/view/ObjectID(%22554e58c15eb2cd41fc085c0e%22)
ObjectID() 部分仅用于 mongodb,不应该在您 url 中。这就是为什么 meteor 没有按照您的预期进行操作。这可能是您如何将 link 设置为 locationView 路线
的示例
{{pathFor 'locationView' _id = this._id}}
希望对您有所帮助
在您的路由中定义的 data
存储在您的模板实例中,因此 Template.instance().data
。您也可以使用 this.data
:
在 onRendered
中访问它
Template.locationView.onRendered(function () {
var data = this.data;
});
解决方案
问题是通过 mongo shell 添加对象。这导致 ObjectID(xxx) 内容出现在对象的 _id 中。
我通过收集方法添加了一些测试对象'insert',一切正常!
我从路由访问数据时遇到问题。
路由器
Router.route('/view/:_id', {
name: 'locationView',
data: function() { return Locations.findOne(this.params._id); }
});
Locations
是我订阅的 MongoDB 合集。我可以通过另一个模板上的辅助方法毫无问题地访问它。它有名称、地址等对象
模板
<template name="locationView">
<h1>{{name}}</h1>
</template>
演示
Application hosted on meteor.com
在首页上,您可以看到 Locations 中的条目可以通过辅助方法从其他模板访问。那么为什么我不能通过路由中的数据对象访问它们?
解决方案
问题是通过 mongo shell 添加对象。这导致 ObjectID(xxx) 内容出现在对象的 _id 中。
我通过收集方法添加了一些测试对象'insert',一切正常!
我刚试过你的申请,我看到了这个 url:
http://mhaehnel-compass.meteor.com/view/ObjectID(%22554e58c15eb2cd41fc085c0e%22)
ObjectID() 部分仅用于 mongodb,不应该在您 url 中。这就是为什么 meteor 没有按照您的预期进行操作。这可能是您如何将 link 设置为 locationView 路线
的示例{{pathFor 'locationView' _id = this._id}}
希望对您有所帮助
在您的路由中定义的 data
存储在您的模板实例中,因此 Template.instance().data
。您也可以使用 this.data
:
onRendered
中访问它
Template.locationView.onRendered(function () {
var data = this.data;
});
解决方案
问题是通过 mongo shell 添加对象。这导致 ObjectID(xxx) 内容出现在对象的 _id 中。
我通过收集方法添加了一些测试对象'insert',一切正常!