あなたEditableView
セットアップそのcontent.value
に結合するディスプレイを:
<script type="text/x-handlebars" data-template-name="editable">
{{view.content.value}}
</script>
エンバーは、マーカーのスクリプトタグと関連する部分をラップすることにより、その結合-更新魔法を実行します。結果のDOMを見て:
今すぐあなたのビューを編集可能。ユーザーがビューの内容を完全に削除するとすぐに、周囲のスクリプトタグも(ブラウザによって)削除されます。 Emberがディスプレイを更新しようとする瞬間に、それは必要なスクリプトタグを見つけられず、したがって不平を言うでしょう。
このアプローチをcontenteditable
と確実に動作させることはできませんが、Ember環境をそのままにしてブラウザを制御することはできません。 content.value
オブザーバを作成し、バインディングを削除して、明示的にDOMを更新します:http://jsfiddle.net/green/BEtzb/2/:
ここ
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である私は、あなたが自分自身を更新ビューの世話をする必要がありますね。それはバグかもしれよう
(あなたはもちろん、通常の入力フィールドを使用し、それはあなたが必要とするすべてだ場合、すべての結合の魔法を提供Ember.TextField
を使用することができます。)
は私に聞こえます。あなたはgithub https://github.com/emberjs/ember.js/issuesでそれを報告してみることができます。それは、それを再現できるようなフィドルがあるからです。 – Aras