首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ember.View可编辑事件

Ember.View可编辑事件
EN

Stack Overflow用户
提问于 2012-04-18 23:55:45
回答 1查看 1.1K关注 0票数 2

我正在尝试让Ember.View监听由可满足元素触发的事件,但遇到了一点小麻烦。

我想要的最终结果是将可内容编辑的更改绑定到Ember对象属性。

可以直接使用jQuery正确绑定事件,如以下答案所示:contenteditable change events

代码语言:javascript
运行
复制
$(function () {
  $(document).on('focus', '[contenteditable]', function(event) {
    var $this = $(this);
    console.log("$" + event.type);
    return $this;
  });
  $(document).on('blur keyup paste', '[contenteditable]', function(event) {
    var $this = $(this);
    console.log("$" + event.type);
    return $this;
  });
});

但是在Ember.View上指定的事件处理程序永远不会被调用:

代码语言:javascript
运行
复制
App.ContentEditable = Ember.View.extend({
  item: App.Item.create({name:"Editable content"}),
  tagName: "span",
  contenteditable:"true",
  attributeBindings: ["contenteditable"],

  // Only event that gets triggered
  click: function(){ console.log("click") },

  // None of these events are triggered
  focusin: function(){ console.log("focusin") },
  focusout: function(){ console.log("focusout") },
  keyup: function(){ console.log("keyup") },
  blur: function(){ console.log("blur") },
  paste: function(){ console.log("paste") },
});​

我已经组合了一个jsfiddle,它显示.on()事件被记录到控制台,但是Ember.View上的事件没有被记录:http://jsfiddle.net/chrisconley/RqSn4/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-19 00:10:41

这是因为Ember中的事件名称被转换为更类似于Ember的命名约定。这种事情发生在packages/ember-views/lib/system/event_dispatcher.js中。如您所见,您必须将现有的事件处理程序重命名为keyUpfocusInfocusOut

默认情况下不会处理其他事件blurpaste,这就是Ember.Application上的customEvents的作用,请参阅http://jsfiddle.net/pangratz666/CHVRt/

代码语言:javascript
运行
复制
App = Ember.Application.create({
    customEvents: {
        blur: 'blur',
        paste: 'paste'
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10213252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档