2013-10-09 75 views
2

我正在使用把手助手來計算數組中有多少行。如果它高於2,它將返回true,並且它按照它的設想工作。看起來是這樣的:把手,如何設置由幫手返回的值的條件

define('templates/helpers/countRows', ['handlebars'], function (Handlebars) { 
    function countRows(selectedArray) { 
     var selectedArrayLength = selectedArray.length; 
     if (parseInt(selectedArrayLength) > 2) { 
      return true; 
     } 
    } 
    Handlebars.registerHelper('countRows', countRows); 
    return countRows; 
}); 

的問題是,我想設置一個條件,我HBS模板檢查,如果該值輸出之前真的還是假的。如果不是這樣,我不希望它輸出。我希望我可以做這樣的事情:

{{#if countRows "my array"}} 
    markup that only gets displayed if value is true 
{{/if}} 

但這不幸的是,不是有效的..

回答

6

最好的辦法是你的控制器來處理這種類型的邏輯上定義計算的性能。

App.ThingsController = Ember.ArrayController.extend({ 
    enoughRows: Ember.computed.gte('content.length', 2) 
}); 

然後在你的模板:

{{#if enoughRows}} 
    ... 
{{/if}} 

這樣嵌入模板具有邏輯是難以調試和測試。遵循這一理念,車把使得很難在真/假之外進行條件檢查。

如果您需要在許多控制器中重複這種邏輯,請考慮製作一個mixin。

App.EnoughRowsMixin = Ember.Mixin.create({ 
    enoughRows: Ember.computed.gte('content.length', 2) 
});