2013-03-01 63 views
0

我無法#each和#if助手。首先,我正在尋找解決方案http://handlebarsjs.com/block_helpers.html,but我沒有找到任何東西。 例如: 有對象:如何在#each幫助程序塊中使用#if幫手

 
{ 
peoples: 
[{ 
    name:"A", 
    age:16, 
    sex:"boy" 
    },{ 
    name:"B", 
    age:14, 
    sex:"boy" 
    },{ 
    name:"C", 
    age:18, 
    sex:"boy" 
}] 
};

在HTML(僞代碼,我想,但我不知道如何完成他們。)

 

    {{#each peoples}} 
      {{#if age equal 16}} 
       {{name}} can drive 
      {{/if}} 
      {{#if age smaller than 16}} 
       {{name}} can't drive 
      {{/if}} 
      {{#if age bigger than 16}} 
       {{name}} can do anything 
      {{/if}} 
    {{/each}} 

 

    {{#each peoples}} 
      {{#if equal(name,"A")}} 
       {{name}} can drive 
      {{/if}} 
      {{#if equal(name,"B")} 
       {{name}} can't drive 
      {{/if}} 
      {{#if equal(name,"c")}} 
       {{name}} can do anything 
      {{/if}} 
    {{/each}} 

感謝您的意見。

回答

1

您需要使用自定義表達式助手。

Handlebars.registerHelper('getDriveStatus', function(age, name) { 
    if (age == 16) { 
    return name + " can drive" 
    } 

    if (age < 16) { 
    return name + " can't drive"; 
    } 

    if (age > 16) { 
    return name + " can't do anything"; 
    } 
}); 

然後,

{{#each peoples}} 
     {{getDriveStatus age name}} 
{{/each}} 

而且它與字符的條件相同。

+0

感謝您的時間,我知道了。並根據您的回覆,我只是找到一個新的解決方案 – 2013-03-02 04:16:14

1

您可以創建Template.YourTemplate.helpers({})段中的輔助功能:

Template.YourTemplate.helpers({ 
     'canDrive' : function(name, age){ 
     if (age == 16) { return name + " can drive" } 
      if (age < 16) { return name + " can't drive"; } 
      if (age > 16) { return name + " can't do anything"; } 
    }, 
    }) 

在模板中,你可以使用它像這樣:

{{#each peoples}} 
     {{canDrive name age}} 
    {{/each}} 
+0

我有一個好主意,感謝您的幫助! – 2013-03-02 04:21:34

1

謝謝@ Prashant和@Oscar,我得到了解決問題的辦法。 他們的回覆很有幫助。如果你有同樣的問題,試着去做。 而且無Handlebars.registerHelper解決方案:

在HTML:

 

    
     {{#each peoples}} 
      {{#if equal name "A"}}{{age}}{{sex}}{{/if}} 
     {{/each}} 
    

在客戶端:

 


    Template.test.equal = function (a,b) { 
     return a===b; 
    }; 

+0

酷!一個建議:在例子中,而不是使用a,b提出命名變量,如名稱,年齡等。感謝分享。 – Prashant 2013-03-02 08:42:19