0

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

1 回答 1

0

此处显示的代码没有问题。

http://jsfiddle.net/XU9Eb/

于 2012-06-26T14:17:39.943 回答