0

我可以在 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 标签时出现此错误(错误消息来自 discourse 应用程序):

未捕获的错误:没有处理操作“”。如果您确实处理了该操作,则此错误可能是由于从控制器中的操作处理程序返回 true 导致的,从而导致操作冒泡。

4

1 回答 1

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"}}错误将被抛出。

于 2014-03-07T14:28:10.083 回答