2012-04-17 10 views
0

を反復しながら値を参照してください。どのようにヘルパーの中のインデックスにアクセスするかについての助けに感謝します。アクセスインデックス値燃えさしのコレクションを反復しながら、このようなインデックス値にアクセスすることができ、インデックス値にアクセスしようとエンバーコレクション

コード:

{{#each App.SampleController}} 
    {{#view App.HomeView contentBinding="this"}} 
     Index : {{_parentView.contentIndex}} 
     {{#compare _parentView.contentIndex "0" operator="=="}} 
     {{/compare} 
    {{/view}} 
{{/each}} 

出力:

Index: 0 and the value getting passed into compare helper is `_parentView.contentIndex` as a string! 

ヘルパーは次のようになります比較:

Ember.Handlebars.registerHelper('compare', function(lvalue, rvalue, options) { 

    if (arguments.length < 3) 
    throw new Error("Handlerbars Helper 'compare' needs 2 parameters"); 

operator = options.hash.operator || "=="; 

var operators = { 
    '==':  function(l,r) { return l == r; }, 
    '===':  function(l,r) { return l === r; }, 
    '!=':  function(l,r) { return l != r; }, 
    '<':  function(l,r) { return l < r; }, 
    '>':  function(l,r) { return l > r; }, 
    '<=':  function(l,r) { return l <= r; }, 
    '>=':  function(l,r) { return l >= r; }, 
    'typeof': function(l,r) { return typeof l == r; } 
}; 

if (!operators[operator]) 
    throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator); 

console.log("operator is "+ lvalue +" and "+rvalue); 
var result = operators[operator](lvalue,rvalue); 
console.log("result from compare registerHelper is "+ result); 

if(result) { 
    return options.fn(this); 
} else { 
    return options.inverse(this); 
} 

});

+0

あなた 'compare'ヘルパーはどのようなものが見えますか? – pangratz

+0

比較ヘルパーを追加しました.Above – user1338121

答えて

1

ヘルパーに渡される最初のパラメータは、実際には値が解決されるプロパティへのパスを表す文字列です。だからあなたのlvalueあなたがhttp://jsfiddle.net/pangratz666/DLPgN/を参照してください、これらの線に沿って何かをしなければならないだろう得るために:

Ember.Handlebars.registerHelper('compare', function(path, compareValue, options) { 

    ... 

    // options.contexts[0] is the passed context 
    // path is the path to the property of the context 
    var lvalue = Ember.getPath(options.contexts[0], path); 
    var rvalue = parseInt(compareValue, 10); // convert to number since it's a string 

    ... 

    var result = operators[operator](lvalue, rvalue); 

});​ 
+0

ありがとうございました。 – user1338121

関連する問題