オブジェクトをjQuery UIダイアログボックスの要素にバインドするために、かなり平凡な方法でノックアウトを使用したいと考えています。かなりのことが起こっていますが、with-control-binding 内にネストしたプロパティが定義されていないという不平を言うノックアウトによって、私は早い段階で足止めされました。
<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") });
このように定義された Feedback コンストラクターを使用して (簡単にするために、他のバインディングをすべて削除しました):
function Feedback(mode) {
var self = this;
self.list = ko.observableArray([]);
self.mode = ko.observable(mode);
self.editFeedback = ko.observable();
}
ノックアウトは、タイトルにバインドされている属性で窒息しています。これはどのように起こっていますか?editFeedback は空です。ko の with-control-binding は、子孫のバインディングがまったくバインドされないようにする必要があります。
これは、別の with-binding 内に with-binding があるという事実と関係がありますか? それは許されますか?
Unable to parse bindings. Message: ReferenceError: mode is not defined; Bindings value: attr: { title: mode }