我可以使用
在emberjs的把手模板中添加动作<li>{{action "SomeAction" this}} {{this.name}}</li>
调用SomeAction。
如何在自定义助手中添加操作(这只是一个示例,我有更多代码):
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>");
});
这会创建相同的li标签,但它不起作用,当我点击li标签时出现此错误(错误消息来自话语应用):
未捕捉错误:没有处理动作''。如果您确实处理了该操作,则可以通过从控制器中的操作处理程序返回true来导致此错误,从而导致操作冒泡。
答案 0 :(得分:0)
错误表示当前上下文的控制器或路由没有处理指定的操作,即不包含actions
属性,其中包含foo
帮助程序中指定的函数。
实施例, 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"}}
,则会引发上述错误。