2015-04-24 36 views
1

我使用預編譯的Handlebars模板。 我有以下代碼:Handlebars - 如何訪問「每個」範圍中的模板數據?

<div id="{{ns}}paymentMethodsTabs"> 
    {{#each paymentMethods}} 
     <button id="{{ns}}{{paymentCardCode}}">{{paymentCardCode}}</button> 
    {{/each}} 
</div> 

在第一div,該ns模板數據是可用的和設置。 但each paymentMethods範圍內,我不能訪問它,我試圖

<button id="{{../ns}}{{paymentCardCode}}">{{paymentCardCode}}</button> 

但它也不起作用。 (該模板返回null而不是HTML代碼,我猜這是因爲它無法找到引用,但我沒有收到任何錯誤消息,並且它很難調試,對此有任何建議?它當我運行Handlebars.templates[path](data)

如何運行each循環並提供模板數據?

下面是我提供的模板中的數據:

{ 
    "ns": 'main-layout-default-', 
    "paymentMethods": [{ 
    "paymentCardCode": "CB", 
    "contractId": "1234" 
    }] 
} 
+0

你能準確地顯示你傳遞的數據對象嗎? (不一定是值,只是結構)。 –

+0

@PiotrJakubowski完成!實際上並不多。 – Vadorequest

+0

如果你從模板中刪除ns的東西,它會工作嗎?你不應該調用'Handlebars.templates [path](data)'而不是'Handlebars.templates(path,data)'嗎? –

回答

0

這是不匹配圖書館。我的代碼是由handlebars 3.0版本生成的,但我使用了運行時2.0,這就是爲什麼它失敗了。

因此,解決辦法的確是以下幾點:

<div id="{{ns}}paymentMethodsTabs"> 
    {{#each paymentMethods}} 
     <button id="{{../ns}}{{paymentCardCode}}">{{paymentCardCode}}</button> 
    {{/each}} 
</div> 

感謝@kpdecker誰幫我出。 https://github.com/wycats/handlebars.js/issues/1011#issuecomment-96694058

0

問題就在這裏,

{ 
    "ns": 'main-layout-default-', // <= missing comma 
    "paymentMethods": [{ 
    "paymentCardCode": "CB", 
    "contractId": "1234" 
    }] 
} 
+0

不,這是*再次*錯誤(因爲數據是動態添加的,我沒有複製/粘貼JSON,但我寫了它,並忘記了這個逗號...)對不起,我的不好 – Vadorequest

0

的 「NS」 是 「paymentMethods」 之外。它不能超出它的範圍。

{ 
    "ns": 'main-layout-default-', 
    "paymentMethods": [{ 
    "paymentCardCode": "CB", 
    "contractId": "1234" 
}] 

}

嘗試

{ 
    "paymentMethods": [{ 
    "ns": 'main-layout-default-', 
    "paymentCardCode": "CB", 
"contractId": "1234" 
}] 
} 

否則,如果 「NS」 值相同的所有生成的數據,然後嘗試

<button id="main-layout-default-{{paymentCardCode}}">{{paymentCardCode}}</button> 
+0

'ns'值是對所有的人來說都是一樣的,這是一個適用於所有元素的名稱空間。它必須是動態的,我不能寫得很難。 – Vadorequest

相關問題