2014-07-08 2 views
0

내가 가진 : 코드에서백본 Marrionete 바인딩 문제

<div class='large-12 columns'> 
    <div id="gritslider"></div> 
    <input rows="3" id='grit' placeholder='Please enter' type='text' /> 
</div> 

나는이 :

onShow: function() { 

     $("#gritslider").slider({ 
      range: true, 
      min: 0, 
      max: 500, 
      values: [ 75, 300 ], 
      slide: function(event, ui) { 
       $("#grit").val(ui.values[ 0 ] + " - " + ui.values[ 1 ]); 
      } 
     }); 
    }, 

슬라이더가 잘 작동, 그것은 돌 더미에 보여줍니다. 그러나 저장할 때 입력 필드에있는 값 (jqueryui에 의해 설정된 값과 동일 함)은 선택되지 않고 저장됩니다. 슬라이더를 사용하여 값을 10-100으로 설정하고, 텍스트 상자에 포커스를두고 수동으로 변경하면 (처음부터 1-2로 변경) 저장됩니다.

이 해결책은 무엇입니까?

답변

0

문제가 해결 된 해결책을 찾았지만 해킹 같은 느낌이 들었습니다. Backbone에서 제공하는 set 함수를 사용하는 것이 사실이지만 바인드가 제대로 작동 할 것이라고 기대하고 있습니다 ... 어떤 경우 든 내 특정 문제에 대한 해결책 :

onShow: function() { 
     var that = this; 
     $("#gritslider").slider({ 
      range: true, 
      min: 0, 
      max: 500, 
      values: [ 75, 300 ], 
      slide: function(event, ui) { 
       debugger; 
       that.model.set("grit", ui.values[ 0 ] + " - " + ui.values[ 1 ]) 
       $("#grit").val(ui.values[ 0 ] + " - " + ui.values[ 1 ]); 
       that.bindings.grit = "#grit"; 
       $("#grit").focus(); 
      } 
     }); 
    },