淘汰观察不起作用

时间:2013-09-17 13:53:33

标签: knockout.js

开始了解Knockout,我在下面的链接中看到了一些教程 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步)中更改为值:meal()。mealName 的值,它将无法正常工作,并且我没有正确使用输出。 附加费 ID取决于用餐名称,但如果我直接给出 meal()。mealName ,那么它出错并且可以帮助我

1 个答案:

答案 0 :(得分: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元素的选定值应该是什么的位置。膳食名称不是可观察的财产,因此它会中断。