您EditableView
设置了一个显示绑定到它的content.value
:
<script type="text/x-handlebars" data-template-name="editable">
{{view.content.value}}
</script>
Ember 通过使用标记脚本标签包装相关部分来执行其绑定更新魔法。查看生成的 DOM:
现在您使视图可编辑。一旦用户完全删除视图的内容,您会注意到周围的脚本标签也被删除(由浏览器)。在 Ember 尝试更新显示的那一刻,它找不到必要的脚本标签,因此会抱怨。
我不认为你可以使这种方法可靠地工作contenteditable
,因为你将无法控制浏览器而保持 Ember 环境完好无损。我想您需要自己更新视图:删除绑定,创建content.value
观察者并显式更新 DOM:
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
使用常规输入字段并提供所有绑定魔法的 an,如果这就是您所需要的。)