2015-04-30 83 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]"