首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >contenteditable和emberjs

contenteditable和emberjs
EN

Stack Overflow用户
提问于 2012-12-08 07:55:19
回答 1查看 816关注 0票数 5

我有一个contentEditable视图,当我focusOut时,我得到输入的html并保存它。

但是,当我从contenteditable中删除所有文本,然后将焦点移出时,我会得到错误

代码语言:javascript
复制
Uncaught Error: Cannot perform operations on a Metamorph that is not in the DOM. 

请查看此value1并删除jsfiddle文本并将焦点移出。

http://jsfiddle.net/rmossuk/Q2kAe/8/

有人能帮上忙吗?

向里克致以最好的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-08 21:29:43

您的EditableView设置了与其content.value的显示绑定

代码语言:javascript
复制
<script type="text/x-handlebars" data-template-name="editable"> 
   {{view.content.value}}
</script>

Ember通过使用标记脚本标记包装相关部分来执行绑定更新魔术。看一下生成的DOM:

现在,您可以使视图可编辑。一旦用户完全删除了视图的内容,您就会注意到周围的脚本标记也被(浏览器)删除了。在Ember试图更新显示的时候,它找不到必要的脚本标记,因此出现了抱怨。

我不认为你可以让这种方法与contenteditable一起可靠地工作,因为你不能控制浏览器而不让Ember环境保持不变。我猜您需要自己处理视图更新:删除绑定,创建content.value观察者并显式更新DOM:

代码语言:javascript
复制
App.EditableView = Em.View.extend({
    contenteditable: "true",
    attributeBindings: ["contenteditable"],

    _observeContent: (function() {
        this._displayContent();
    }).observes('content.value'),

    didInsertElement: function() {
        this._displayContent();
    },
    _displayContent: function() {
        this.$().html(this.get('content.value'));
    },
    ...

这是一个包含此解决方案演示的JSFiddle:http://jsfiddle.net/green/BEtzb/2/

(当然,您也可以使用Ember.TextField,它使用常规输入字段并提供所有绑定魔术,如果这是您所需要的。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13772885

复制
相关文章

相似问题

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