2016-07-25 65 views
0

在我的js文件,我通過一個JSON對象有兩個按鍵 - {「測試」:測試「 isComplete」:isComplete}車把 - 使用#如果傭工兩個條件

在我的車把文件,我想根據每個測試狀態顯示測試對象。同時,還有一個條件是我添加了一個名爲'isRequired'的助手,我只想在isComplete不正確的情況下檢查測試。

{{#if isComplete}} 
{{#each tests}} 
    {{#isRequired this}} 
     // display data 
    {{/isRequired}} 
{{/each}} 
{{else}} 
{{#each tests}} 
    // display data 
{{/each}}{{/if}} 

此代碼具有顯示數據的重複代碼。我仍然在學習句柄,不確定如何消除冗餘代碼塊。你能幫我怎麼重構這個嗎?謝謝!

回答

1

我可能會通過向您的isRequired助手添加一個isComplete參數來解決此問題。您還沒有提供你的助手的代碼,但我想它最終會看起來像這樣:

Handlebars.registerHelper('isRequired', function (context, isComplete, options) { 
    if (!isComplete) { return options.fn(context); } 
    /* rest of isRequired implementation here */ 
}); 

如下您的模板,然後將被更新:

{{#each tests}} 
    {{#isRequired this ../isComplete}} 
     // display data 
    {{/isRequired}} 
{{/each}} 

注意,此實現適用isRequired邏輯僅當isCompletetrue。這與您的模板代碼示例中存在的規則相同。但是,這些規則似乎與您的問題的文本相矛盾,它指定isRequired應該應用「僅當isComplete不正確時」。如果這些是我們必須滿足的要求,我們只需要從我們的新守衛條款中刪除非運營商:

if (isComplete) { return options.fn(context); } 
+0

這有幫助。 ../爲嵌套路徑是我不知道的東西。謝謝!! – Lynn