我希望以一种相当时髦的方式使用敲除将对象绑定到 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 }