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