例外的な動作は次のとおりです。ユーザーが質問を他の質問にドロップすると、2 つの質問の間で順番が変わります。
ビューを記述する前に、Encuesta.View.Pregunta
質問を切り替えるための動作が実装され、正常に動作します。コントローラー メソッドmvPregunta
は、2 つの質問の間の場所を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}}