0

任何人都可以请帮忙,或者给我一个关于如何继续前进的提示。

我正在尝试与 KnockoutJS 一起制作一个示例应用程序(我正在学习 MVC 并尝试学习 jQuery/Knockout)。

该示例基于 Knockout 培训文档中的购物车示例 - 我的副本/版本在这里:

JsFiddle示例

JSON相当简单:

[{
    "occ": [
    {
        "name": "1 Room only",
        "price": 53.9},
    {
        "name": "1 B&B",
        "price": 62.16}, ],

    "TypeName": "Single",
    "TypeID": "3121",
    "TypeCount": "2"
    },
{
    "occ": [
    {
        "name": "2 B&B",
        "price": 24.23},
    {
        "name": "2 DBB",
        "price": 32.95}],

    "TypeName": "Double",
    "TypeID": "4056",
    "TypeCount": "2"
    }......

所以第一个下拉菜单链接到“TypeName”和“TypeID”。

当从中进行选择时,Occ(第二个下拉菜单)显示该房间可用的报价(例如 2 DBB @ 32.95)。

目前有一个文本框,您可以在其中输入您想要的数量 - 但是,我希望它被限制为一个数字,最多为 JSON 中的“TypeCount” - 或者更好的是,有另一个下拉列表,其数量最多为“TypeCount”。

如果可能的话,我还想限制单击“添加房间”并添加另一行时显示的内容 - 所以我不想在上面的下拉列表中看到任何已在上面的行中选择的房间类型下一行。

感谢您的任何指点,

标记

4

1 回答 1

1

Knockout 包含一个名为的实用程序ko.utils.range,您可以为其指定起始值和结束值。您可以使用它来创建从 1 到您的TypeCount.

有几种写法,这里举一个例子:

<td class='quantity' data-bind="with: category">
    <select data-bind="visible: $parent.product, options: ko.utils.range(1, TypeCount), value: $parent.quantity"></select>
</td>

更新小提琴:http: //jsfiddle.net/rniemeyer/3t6hP/4/

于 2012-08-22T12:18:22.253 回答