2014-03-07 73 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"}}到上述错误将被抛出。

相关问题