2016-02-26 56 views
1

我有一個部分顯示名稱而不是回送模板本身的有線問題。出於某種原因,部分沒有獲得註冊。以下是我的代碼...我相信我錯過了一些東西,但無法完全弄清楚。所有的幫助表示讚賞。我使用的快遞車把環回和車把把手部分顯示名稱而不是模板回送

在server.js,之間的橋樑,我有以下代碼

var handlebars = require('handlebars'); 
var exphbs  = require('express-handlebars'); 

var hbs = exphbs.create({ 
    defaultLayout : '', 
    helpers  : {}, 
    extname  : 'handlebars' 
}); 

app.engine('handlebars', hbs.engine); 
app.set('view engine', 'handlebars'); 
app.set('views', __dirname + '/../client/views'); 

以下是我的快遞路由器代碼...

router.get('/', function(req, res) { 
    res.render('index', { 
     partials: { 
      mypartial : 'awesomepartial' 
     }, 
    }); 
}); 

...以及索引頁中的部分標記。該部分頁面,只是普通的HTML代碼

{{> mypartial}} 

....當指數模板被執行,而不是看到從awesomepartial.handlebars模板(駐留在同一個目錄中index.handlebars)我看到後面的文本文字

awesomepartial 

我能做什麼錯?爲什麼handlebars發送部分名稱而不是模板代碼。我嘗試了各種組合,這讓我相信這條道路可能不成問題。

回答

0

我相信你需要使用動態部分,其可以這樣判定:

{{>(mypartial)}}

基本上只是包裝用括號中的變量。請參閱文檔的「動態局部變量」在這裏:http://handlebarsjs.com/partials.html

+0

謝謝你的回覆和指針。 您的解決方案給了我「408 TypeError:自定義消息:undefined不是函數」,所以最終做{{>(lookup。'partials.mypartial')}}並且定義partialsDir:__dirname +'/../client/views',在創建一個exphbs的實例時是可變的。 –

2

以下是工作代碼...

var handlebars = require('handlebars'); 
var exphbs  = require('express-handlebars'); 

var hbs = exphbs.create({ 
    defaultLayout : '', 
    helpers  : {}, 
    partialsDir : __dirname + '/../client/views', 
    extname  : 'handlebars' 
}); 

app.engine('handlebars', hbs.engine); 
app.set('view engine', 'handlebars'); 
app.set('views', __dirname + '/../client/views'); 


router.get('/', function(req, res) { 
    res.render('index', { 
     mypartial : 'awesomepartial' 
    }); 
}); 

{{> (lookup . 'mypartial'}} 
相關問題