2014-03-07 72 views
0

我可在車把模板與如何在自定義註冊助手中使用emberjs動作助手?

<li>{{action "SomeAction" this}} {{this.name}}</li> 

的SomeAction被稱爲添加動作爲emberjs。

請問有什麼可以添加自定義的助手裏的動作(這只是一個例子,我在那裏有更多的代碼):

Ember.Handlebars.registerHelper('foo', function(property, options) { 
    var bar = Ember.Handlebars.get(this, property, options); 

    var args = Array.prototype.slice.call(arguments, 1); 
    args.unshift("someAction"); 
    args.unshift(bar); 
    var action = Ember.Handlebars.helpers.action.apply(this, args); 

    return new Ember.Handlebars.SafeString("<li "+new Ember.Handlebars.SafeString(action)+">"+bar.get("name")+"</li>"); 
}); 

這就造成了同裏的標籤,但它不工作,用這個錯誤,當我點擊李標籤(錯誤消息是從話語應用程序):

未捕獲的錯誤:沒有處理行動''。如果您確實處理了該操作,則可能是由於從控制器中的操作處理程序返回true導致該操作冒泡而導致此錯誤。

+0

該錯誤指示當前上下文沒有控制器或路由處理指定的動作,即不包含具有'foo'助手中指定的函數的'actions'屬性。看看這個例子,http://emberjs.jsbin.com/zudiqewo/1/edit如果你在'hbs'模板中重命名'{{foo「test」}}'爲'{{foo「teest」}}'你會收到你提到的錯誤。 – melc

+0

Thx,var bar = this;和你的行動工作:)作出答案,我會接受它:) – Piioo

+0

偉大的我很高興你工作了出來 – melc

回答

0

錯誤表示沒有當前上下文的控制器或路由處理指定的操作,即不包含具有在foo幫助程序中指定的函數的actions屬性。

實施例, http://emberjs.jsbin.com/zudiqewo/1/edit

JS

Ember.Handlebars.registerHelper('foo', function(property, options) { 

    var action = Ember.Handlebars.helpers.action.apply(this, arguments); 

    return new Ember.Handlebars.SafeString("<li "+new Ember.Handlebars.SafeString(action)+">click here</li>"); 
}); 

如果在hbs模板test被重命名從{{foo "test"}}{{foo "teest"}}到上述錯誤將被拋出。

相關問題