2014-09-12 25 views
0

我用局部區域替換了文件中的一些重複代碼,但現在相對部分的調用不再工作。handlebars.js:局部區域中的相對路徑不工作

我有這樣的數據結構:

var data = { staff: [ 
     {"name": "Alan"}, 
     {"name": "Bettina"} 
     ],"company": "Rad, Inc."}; 

原始模板看起來是這樣的:

<script id="first_template" type="text/x-handlebars-template"> 
{{#each staff}} 
    <li>Name: {{name}} , Company: {{../company}}</li> 
{{/each}} 
</script> 

我改變了它這樣使用部分:

<script id="list-partial" type="text/x-handlebars-template"> 
    <li>Name: {{name}} , Company: {{../company}}</li> 
</script> 

<script id="second_template" type="text/x-handlebars-template"> 
{{#each staff}} 
    {{> list}} 
{{/each}} 
</script> 

在部分公司名稱的示例不會呈現。我把一個工作的例子在jsfiddle:http://jsfiddle.net/staeff/qwms6h2b/

有沒有人看到,爲什麼它不工作,我想要做什麼?

+0

因爲partials有它自己的上下文,所以你傳入了。構造'{{> list}}'等價於'{{> list this}}'。 – raidendev 2014-09-12 13:15:57

+0

嗨raidendev,謝謝你的回答。我已經閱讀了上下文,但我仍然感到困惑。對於我想要做的事情,這不是「正確的」背景嗎? – staeff 2014-09-12 14:08:25

+0

問題出在'{{../ company}}'結構中,因爲在部分中沒有上部'../'級別。解決這個問題的方法之一是將'#each'移到partial中,並將其命名爲「staffList」。但正確的方法是重構你的數據結構。 – raidendev 2014-09-12 14:14:12

回答

0

在評論

的問題是在{{../company}}建築回答raidendev,因爲你必須在局部沒有上限../水平。解決這個問題的方法之一是將#each移到partial中,並將其命名爲「staffList」。但正確的方法是重構你的數據結構。 - raidendev

好的,我發現,我的問題已經在stackoverflow上討論和解決,但我不知道,要搜索什麼。請參閱問題handlebars - is it possible to access parent context in a partial?以解決我的確切問題。