javascript - 如何为我的 Handlebars 模板创建 Action 助手?

标签 javascript jquery handlebars.js

我有一个模板

    <div class="message">
        <div class="quote"><div class="tail"></div>{{prompt}}</div>
        <textarea name="message" placeholder="Your question"></textarea>
        <button name="ask" value="ask">Ask</button>
    </div>

我想做那样的助手<button name="ask" value="ask" {{action askAction on="click"}}>Ask</button>

这个助手创建 jQuery 事件处理程序,例如:

jQuery("button[name=ask]").click(function(){
    App.askAction();
})

我想对我的 html 进行抽象,但除了 jQuery 和 Handlebars 之外我不想使用任何东西。

最佳答案

我找到了这个http://jsfiddle.net/ebryn/cCRck/

Ember.Handlebars.registerHelper('action', function(actionName, options) {
  var hash = options.hash || {},
      actionId = ++jQuery.uuid,
      eventName = options.hash.on || "click",
      // Do we need to worry about the specified target changing?
      target = options.hash.target ? Ember.getPath(options.hash.target) : this, 
      ret = [];

  var handler = registeredActions[actionId] = function(event) {
    target[actionName](event);
  };

  // FIXME: Use App's rootElement
  $(document.body).delegate('[data-ember-action=' + actionId + ']', eventName, handler);

  ret.push('data-ember-action="' + actionId + '"');
  return new Ember.Handlebars.SafeString(ret.join(' '));
});

并进行了一些定制

关于javascript - 如何为我的 Handlebars 模板创建 Action 助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462457/

相关文章:

javascript - 根据输入数据,如果条件为真,则显示按钮

javascript - ajax后制作onclick事件

javascript - 如何使用 Handlebars 让 HTML 使用 JSON 文件中的内容填充自身?

rust - 火箭内的 Handlebars helper

templates - 如何在外部文件中定义 Handlebar.js 模板

javascript - 如何使用 jquery 删除起始 div 元素?

javascript - 如何在 JS 中创建对象的可变和不可变副本

javascript - 自动将版本添加到 asp.net header runat ="server"内的 js 文件

javascript - jQuery 脚本已加载,但抛出 `undefined` 错误

javascript - 浏览器 GET 请求返回旧图像