我想爲我的Ember應用程序構建一個新的條件助手。 需要注意的是,我使用的Ember 1.10.1使用了Handlebars 2.0,我無法升級它,這將很好的解決這個版本的Ember的問題。 在寫這裏之前,我嘗試了不同的解決方案並調試了Ember代碼,我靠近解決方案,但可能我錯過了一些東西。建立一個條件Ember幫手
首先,我試着用下面的方法讀取車把文檔:
Ember.Handlebars.registerHelper('helperName', function(conditional, options) {
if(conditional) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
而且這裏的模板:
{{#helperName booleanCondition}}
print true
{{else}}
print false
{{/helperName}}
一切正常調用fn
功能,但inversion
功能(用於呈現else分支的模板)實際上是一個對象而不是一個函數。
然後,我開始調試灰燼代碼,我試圖遵循灰燼與if
助手使用相同的方法,所以我結束了以下內容:
Ember.Handlebars.registerHelper('helperName', function(condition, options) {
var permission = Ember.Object.extend({
can: Ember.computed(function() {
return condition;
})
}).create();
Ember.Handlebars.helpers.boundIf.helperFunction.call(this, ["can"], permission, options, options.data.buffer);
});
can
是,如果綁定屬性,因爲我們使用if
的boundIf
版本(這就是我剛纔所說的),所以用於更改模板,如果屬性更改。
該解決方案的問題是,該imho可能是最接近正確的是該屬性計算不正確,助手打印總是錯誤的值。 我調試了很多而沒有使其工作,所以任何幫助將非常感激,我希望這可能對其他人有用。
試過,但我得到'TypeError:key.indexOf不是一個函數',除此之外,我想解決使用把手的問題而不是HTMLBars,但非常感謝您的回答! – AndreaScn
你沒有把手。 Ember轉移到'1.10' AFAIK的HTMLBars。你從來都沒有!而你的錯誤沒有幫助。可能它或者是你的幫手或者代碼中的其他地方出了問題。我試過了上面的代碼。 – Lux