vostri EditableView
stabilisce un legame di visualizzazione al suo content.value
:
<script type="text/x-handlebars" data-template-name="editable">
{{view.content.value}}
</script>
Ember svolge la sua magia vincolante-aggiornamento avvolgendo le parti pertinenti con tag script pennarello. Dai un'occhiata al DOM risultante:
Ora fate la vostra visualizzazione modificabile. Non appena l'utente cancella completamente il contenuto della vista, noterai che anche i tag di script circostanti vengono rimossi (dal browser). Al momento Ember tenta di aggiornare il display, non troverà i tag script necessari e quindi si lamenta.
Non credo che questo approccio possa funzionare in modo affidabile con contenteditable
, poiché non sarà possibile controllare il browser lasciando intatto l'ambiente Ember. Credo che si avrà bisogno di prendersi cura della vista di aggiornare da soli: rimuovere l'associazione, creare un osservatore content.value
e aggiornare il DOM esplicitamente:
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'));
},
...
Ecco un JSFiddle con una demo di questa soluzione: http://jsfiddle.net/green/BEtzb/2/.
(Si potrebbe naturalmente anche utilizzare un Ember.TextField
che utilizza un campo di inserimento regolare e fornisce tutta la magia di legame, se questo è tutto ciò che serve.)
fonte
2012-12-08 13:29:42
suona per me come può essere un bug. Potresti provare a segnalarlo su github https://github.com/emberjs/ember.js/issues soprattutto perché hai un violino che può riprodurlo. – Aras