属性オブジェクトの配列を生成するフォームがあります。属性オブジェクトには、属性値の配列である配列プロパティがあります。フォームを使用すると、属性名と属性値の配列を追加して、属性オブジェクトにマップできます。
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;
};
作成時にAttributeValuesの配列を持つ ViewModel を使用して、属性の名前とともにそれを属性のローカル配列に渡します。
function newProductViewModel() {
var self = this;
self.attributeName = ko.observable();
self.attributes = ko.observableArray([]);
self.attributeValues = ko.observableArray([]);
フォームで属性を作成する場合、ノックアウトは、AttributeValues の配列に追加した属性値を問題なくリストします。
<select multiple="multiple" height="5" data-bind="options: attributeValues, optionsText: 'Value', selectedOptions: selectedItems, optionsCaption: 'Added Values...'">
ここで、attributeValuesは ViewModel の attributeValues の配列です。
属性名と属性値のリストが追加され、属性を追加したら、ViewModelの observableArray属性プロパティを foreach して、作成した追加された属性のリストを表示します。
問題
問題は、各属性の属性 Values 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
ただし、各属性の Values 配列内の各AttributeValueの値はリストされません。
ステップスルーしたところ、Values プロパティに適切な値が設定されていることがわかります。
私は何を間違っていますか?