簡體   English   中英

如何在自定義注冊助手中使用emberjs動作助手?

[英]How to use emberjs action helper within custom registered helper?

我可能會在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 app):

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

該錯誤表明當前上下文沒有控制器或路由處理指定的操作,即不包含具有在foo helper中指定的功能的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"}} ,則會拋出上述錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM