我尝试使用knockout-kendo.js 在knockout forEach 模板中声明kendo dropdownlist 控件,以便当新项目添加到knockout 可观察数组时,新的kendo dropdownlist 会在UI 中呈现。
最初,我意识到我无法再将下拉列表的选定值绑定到下拉列表指定的“数据”数组中的整个条目对象。
为了解决这个问题,我遵循了 RP Niemeyer 在以下线程中的建议:设置剔除中下拉列表到对象的绑定 https://stackoverflow.com/questions/14613550/set-the-binding-of-a-dropdown-in-knockout-to-an-object/15639369#15639369
现在,这一切都有效了。伟大的。
我的问题是,当尝试将第二个下拉列表添加到模板时,谁的数据绑定到从计算的可观察值返回的对象上的数组属性...(我需要链接下拉列表,以便第一个显示所有学生,第二个显示当前在第一个下拉列表中选择的学生的所有班级,第三个显示当前在第二个下拉列表中选择的班级的所有测试成绩,依此类推......)
我根据 RP Niemeyer 的原始小提琴创建了一个小提琴来演示我的问题:
原创小提琴(RP Niemeyer's) http://jsfiddle.net/rniemeyer/xz2uY/
我摆弄的问题 http://jsfiddle.net/wLrKb/
我将以下几行添加到小提琴中:
HTML:
<input data-bind="kendoDropDownList: { dataTextField: 'caption', dataValueField: 'id', data: selectedChoice().shapes, value: selectedShapeId }" />
JS:
this.choices = ko.observableArray([
{ id: "1", name: "apple", shapes: ko.observableArray([ { id: "5", caption: "circle" }, { id: "6", caption: "square" }]) },
{ id: "2", name: "orange", shapes: ko.observableArray([ { id: "5", caption: "circle" }]) },
{ id: "3", name: "banana", shapes: ko.observableArray([ { id: "5", caption: "circle" }, { id: "6", caption: "square" }, { id: "7", caption: "triangle" }]) }
]);
再次,我期望在第一个下拉列表中的选择更改(导致 selectedId 更改,导致 selectedChoice 更改)也会导致任何绑定到“selectedChoice”或任何 selectedChoices' 属性的 UI 元素,使其绑定重新- 分别进行了评估和UI更新。
我错过了什么吗?或者是否有更好的方法来实现这种“下拉列表链接”行为(同时仍然使用淘汰赛模板和剑道下拉列表控件)?