2012-06-25 6 views
0

jquery UI 대화 상자의 요소에 객체를 바인딩하기 위해 상당히 매끄러운 방법으로 knockout을 사용하고 싶습니다. 꽤 많은 일이 벌어 지지만 초기에 knockout에 의해 붙잡 혔습니다. 그 중 하나는 컨트롤 첨부 바인딩 안에 중첩 된 속성이 정의되어 있지 않다는 것입니다.중첩 된 중첩 컨트롤 바인딩

<div class="feedback-container" data-bind="with: feedback"> 
[... Other Bindings Here...] 
<div class="feedback-list" data-bind="foreach: list"> 
    <div class="item"> 
     [... List binding here ...] 
    </div> 
</div> 

<!-- Dialog Box for editing/creation--> 
<div style="display: none" data-bind="with: $root.feedback.editFeedback"> 
    <div id="dialog_add_feedback" data-bind="attr: { title: mode }"> 
     <div class="form"> 
      <div class="field" data-bind="if: $root.feedback.mode() == 'contact'"> 
       <label>Lot</label> 
       <input type="text" data-bind="value: lot"/> 
      </div> 
      <div class="field" data-bind="if: $root.feedback.mode() == 'lot'"> 
       <label>Contact</label> 
       <input type="text" data-bind="value: contact"/> 
      </div> 

     </div> 
    </div> 
</div> 
</div> 

이 같은 바인딩을 적용하고있다 :

ko.applyBindings({ "feedback" : new Feedback("contact") }); 

를 피드백 생성자 thusly 히 정의되는으로 (I 단순화하기 위해 다른 바인딩의 전체 무리를 제거했습니다) :

function Feedback(mode) { 
    var self = this; 

    self.list = ko.observableArray([]); 
    self.mode = ko.observable(mode); 
    self.editFeedback = ko.observable(); 
}   

녹아웃이 title에 대한 속성 바인딩에 질식합니다. 어떻게 된 일인가? editFeedback이 비어 있으면 ko의 with-control-binding은 하위 바인딩이 전혀 바인딩되지 않도록해야합니다.

다른 바인딩이 포함 된 바인딩이 있다는 사실과 관련이 있습니까? 그게 허용됩니까?

Unable to parse bindings. Message: ReferenceError: mode is not defined; Bindings value: attr: { title: mode } 
+0

아마 당신은이 바이올린을 기반으로 문제를 설명 할 수 있습니까? '.dialog'를 전혀 호출하지 않습니까? 만약 당신이 그렇다면, 내 의혹은 당신이 같은 문제를 때리는 것 : http://stackoverflow.com/questions/10917264/observablearray-bound-table-does-not-update-when-inside-a-jquery- ui-dialog/10957190 # 10957190 대화 상자가 아래쪽으로 이동하고 KO가 다시 바인딩하려고 시도합니다. –

답변

0

여기에 제시된 코드는 문제가 없습니다. http://jsfiddle.net/rniemeyer/FUccj/ :

http://jsfiddle.net/XU9Eb/

+0

당신 말이 맞아요. 미안 해요. 내가 관찰 할 수있는 배열과 객체로 구성된 관찰 가능한 객체를 포함하고 있기 때문에 내가 녹아웃으로 많은 다른 문제를 겪고있는 이유를 발견했다. 관찰 가능한 중첩의 대부분은 불필요했으며 일단 제거되면 모든 것을 작동시킬 수있었습니다. –