例外的行为是:当用户将一个问题放到其他问题中时,两个问题之间的顺序会发生变化
在编写视图之前,Encuesta.View.Pregunta
实现了切换问题的行为并且工作正常,控制器方法mvPregunta
将两个问题之间的位置更改为numero
.
Encuesta.View.Pregunta
当问题被切换时,视图的新视图被切换,mvPregunta
但视图不会改变
脚本
@Encuesta.View.reopen
Pregunta: Em.View.extend
tagName: 'span'
editMode: false,
attributeBindings: 'draggable',
draggable: 'true'
doubleClick: (ev) ->
@set 'editMode', true
dragStart: (ev) ->
data = ev.originalEvent.dataTransfer
data.setData 'numero', @get 'content.numero'
dragEnter: (ev) ->
ev.preventDefault()
return false;
dragOver: (ev) ->
ev.preventDefault()
return false;
drop: (ev) ->
numero = ev.originalEvent.dataTransfer.getData 'numero'
if numero isnt @get 'content.numero'
App.get('router.myController').mvPregunta numero, @get 'content.numero'
ev.preventDefault()
return false;
PreguntaTextField: Em.TextField.extend
editModeBinding: 'parentView.editMode'
didInsertElement: ->
@$().focus()
insertNewline: ->
@set 'editMode', false
focusOut: (ev) ->
@set 'editMode', false
模板
{{#each item in controller.items}}
<li>
{{#view Encuesta.View.Pregunta
contentBinding="pregunta"}}
{{#if view.editMode}}
{{view Encuesta.View.PreguntaTextField
valueBinding="view.content.texto"}}
{{else}}
{{view.content.texto}}
{{/if}}
{{/view}}
</li>
{{/each}}