【发布时间】:2012-06-24 20:01:11
【问题描述】:
我有一个生成属性对象数组的表单。属性对象有一个数组属性,它是属性值的数组。该表单允许您添加属性名称和属性值数组并映射到属性对象:
function Attribute(data) {
var self = this;
self.Name = ko.observable([data.attributeName]);
self.Values = ko.observable([data.attributeValues]);
}
而Values数组是AttributeValues的一个属性:
function AttributeValue(data) {
this.Value = data.value;
};
ViewModel 在创建时具有 AttributeValues 数组,并将其与 Attribute 名称一起传递给其本地 Attributes
数组 function newProductViewModel() {
var self = this;
self.attributeName = ko.observable();
self.attributes = ko.observableArray([]);
self.attributeValues = ko.observableArray([]);
当您在表单中创建属性时,knockout 列出您添加到 AttributeValues 数组中的属性值没有问题:
<select multiple="multiple" height="5" data-bind="options: attributeValues, optionsText: 'Value', selectedOptions: selectedItems, optionsCaption: 'Added Values...'">
其中 attributeValues 是 ViewModel 的属性值数组。
添加属性名称和属性值列表并添加属性后,我会遍历 ViewModel 上的 observableArray attributes 属性,以显示添加的属性列表创建它们。
问题
问题是我为每个属性的属性值数组显示了一个下拉(选择)Values:
<ul data-bind="foreach: attributes">
<li>
<div>
<span data-bind="text: Name"></span>
<select multiple="multiple" height="5" data-bind="options: Values, optionsText: 'Value', selectedOptions: selectedItems, optionsCaption: 'Added Values...'">
.....remove for sake of brevity
但它不会列出每个 Attribute
的 Values 数组中每个 AttributeValue 的 Value我已逐步完成,可以看到 Values 属性确实设置了正确的值。
我做错了什么?
【问题讨论】:
标签: javascript arrays knockout.js