0

ノックアウトについて学び始め、以下のリンクでいくつかのチュートリアルを見ました http://learn.knockoutjs.com/#/?tutorial=collections

ページに次のコードがあります

 <tbody data-bind="foreach: seats">
        <tr>
            <td><input data-bind="value: name" /></td>
            <td><select data-bind="options: $root.availableMeals, value: meal, optionsText: 'mealName'"></select></td>
            <td data-bind="text: formattedPrice"></td>
        </tr>    
    </tbody>

上記のコードをこのように変更すると

<tbody data-bind="foreach: seats">
        <tr>
            <td><input data-bind="value: name" /></td>
            <td><select data-bind="options: $root.availableMeals, value: meal().mealName, optionsText: 'mealName'"></select></td>
            <td data-bind="text: formattedPrice"></td>
        </tr>    
    </tbody>

ステップ3/5 で値を次のように変更すると、食事 ().mealNameが正しく機能せず、適切な出力が得られません。追加料金IDは食事の名前によって異なりますが、直接meal().mealNameとして 与えると、何がうまくいかず、誰かが私を助けることができます

4

1 に答える 1

1

編集不可のフィールド「mealName」をコードの値として設定することはできません。これはチュートリアルに記載されています-

// Non-editable catalog data - would come from the server
self.availableMeals = [
    { mealName: "Standard (sandwich)", price: 0 },
    { mealName: "Premium (lobster)", price: 34.95 },
    { mealName: "Ultimate (whole zebra)", price: 290 }
];    

値バインディングは、select 要素の選択された値がどうあるべきかを設定する場所です。食事名は観察可能なプロパティではないため、壊れます。

于 2013-09-17T14:05:30.713 に答える