Knockout嵌套控件绑定

时间:2012-06-25 11:26:08

标签: jquery-ui knockout.js

我希望以一种相当简单的方式使用knockout来将对象绑定到jQuery UI对话框中的元素。有很多事情发生了,但我早就被淘汰出局抱怨说我没有定义我在嵌入式控制绑定中嵌套的属性。

<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扼杀了绑定到title的属性。这是怎么回事? editFeedback为空,ko的with-control-binding应该可以防止后代绑定被绑定。

这是否与我在另一个带有绑定的内部有绑定的事实有关?这是允许的吗?

Unable to parse bindings. Message: ReferenceError: mode is not defined; Bindings value: attr: { title: mode }

1 个答案:

答案 0 :(得分:0)

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

http://jsfiddle.net/XU9Eb/