2014-01-29 52 views
1

我有一個部分模板,表示表中的一行,它也直接從Javascript中使用(見下面的背景)。這是我如何使用它作爲一個部分:如何在部分模板中設置@key? (或爲什麼它不可能?)

{{#each this}} 
{{> my_onerow}} 
{{/each}} 

下面是一個簡化my_onerow

<div>{{@key}}: {{x}}, {{y}}</div> 

我可以作爲JST.myJST.my_onerow這些模板,所以我的JavaScript看起來像:

var obj={ 
    one:{x:"this",y:"that"}, 
    two:{x:55,y:77}, 
    three:{x:"hello",y:"world"} 
    }; 
$('body').append(JST.my(obj)); 

@key部分可用,所以我得到這個:

<div>one: this, that</div> 
<div>two: 55, 77</div> 
<div>three: hello, world</div> 

然後,當我想從JavaScript添加其他行,直接,我做的:

var newObj = {x:"new",y:"entry"}; 
$('body').append(JST.my_onerow(newObj)); 

這也工作正常,但@key"",我不知道的方式來定義它。這不起作用:

var newObj = {"@key":"four",x:"new",y:"entry"}; 

我的問題是:我如何定義@key直接使用JST.my_onerow模板時?或者,如果不可能的話,任何人都可以對Handlebars內部有所瞭解,以解釋爲什麼它不容易被添加?

(我使用的把手1.3.0。)


背景:我這樣做是通過創建它作爲一個正常的模板,編譯成JST,然後我提出可以作爲這一行的諧音所有模板:

Handlebars.partials = JST; 

這一點工作正常。我只是把它提到一邊。

回答

0

(自答案與黑客十歲上下的解決方法我目前使用的,以防萬一我真正想做的事是不可能的。)

我目前做的是預處理的數據,添加里面的對象鍵價值部分,作爲key成員。這只是使用JST.my之前完成:

for(key in obj)obj.key = key; 
$('body').append(JST.my(obj)); 

然後,我改變my_onerow看起來像這樣:

<div>{{key}}: {{x}}, {{y}}</div> 

現在直接從JavaScript添加行時我當然可以指定key很輕鬆了。

相關問題