2015-04-30 50 views
0

我有一个main.html文件也是一个layout.html文件。里面的布局也包含此代码流星{{yield}}不显示文章

<template name="layout"> 
<div class="container"> 
<header class="navbar"> 
    <div class="navbar-inner"> 
     <a class="brand" href="{{pathFor 'postsList'}}">Test</a> 
    </div> 
</header> 
    <div id="main" class="row-fluid"> 
     {{yield}} 
    </div> 
</div> 

然后我有一个publications.html文件

Meteor.publish('posts', function() { 
    return Posts.find(); 
}); 

而一个router.js文件

Router.configure({ 
layoutTemplate: 'layout', 
loadingTemplate: 'loading', 
waitOn: function() { return Meteor.subscribe('posts'); } 
}); 
Router.map(function() { 
this.route('postsList', {path: '/'}); 

this.route('postPage', { 
    path: '/posts/:_id', 
    data: function() { return Posts.findOne(this.params._id); } 
}); 
}); 

然后我posts_list.html

<template name="postsList"> 
<div class="posts"> 
    {{#each posts}} 
     {{> postItem}} 
    {{/each}} 
</div> 

收集

if (Posts.find().count() === 0) { 
Posts.insert({ 
title: 'Twitter', 
author: 'Tom', 
url: 'http://twitter.com' 
}); 
Posts.insert({ 
title: 'Facebook', 
author: 'Mark', 
url: 'http://facebook.com' 
}); 
} 

我我的显示页面上得到一个对象错误。它没有显示我的帖子,只是[对象对象]。任何原因,我的路线是否正确?

这里是错误的图像!

Object

+1

''[object object]'意思是说,如果你认为你有一个字符串,那么就有一个对象。 – Pointy

+0

@pointy是的,这是我的收藏,生病在帖子中也发布给你看 – crsMC

+2

你的意思是'{{> yield}}'而不是{{yield}}吗? –

回答

1

您需要使用{{> yield}}而不是{{yield}}

详细解释:{{> ...}}构造告诉Meteor在那里呈现模板;否则,它会尝试转换为将帮助器调用到字符串的结果。你得到[object Object]的原因是因为yield帮手是一个对象;你可以看到,通过登录它:

console.log(Blaze._globalHelpers.yield); 

这导致...

{viewName: "yield", renderFunction: function, __helpers: HelperMap, __eventMaps: Array[0], _callbacks: Object…} 

对象,当转换为字符串,渲染为 “[对象的对象]”。您可以在控制台中确认这一点:

foo = {blah: 1} 
foo.toString() 
=> "[object Object]"