我有一个模板
<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/