2012-06-25 183 views
0

我希望能夠以相當一擊的方式使用knockout來將對象綁定到jQuery UI對話框中的元素。有很多事情發生了,但是我很早就被knockout抱怨,抱怨我嵌套在with-control-binding內的屬性沒有定義。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") }); 

與所正是如此定義的反饋構造函數(我已經刪除了一大堆其他綁定爲簡單起見):

function Feedback(mode) { 
    var self = this; 

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

Knockout在與標題綁定的屬性上窒息。這是怎麼發生的? 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

你說得對,後來我發現我之所以遇到很多不同的knockout問題,是因爲我有一個可觀察數組,其中包含可觀察數組和可見對象組成的可觀察對象。大部分可觀察的嵌套是不必要的,一旦刪除,我能夠使所有的工作。 –