0

这是一个稍微难以用语言表达的问题。基本上,我一直在尝试基于 KnockoutJS 网站 (http://knockoutjs.com/examples/cartEditor.html) 中的一个示例在 KnockoutJS 中构建购物车页面。但是我想使用 jQueryUI 滑块,以便我可以调整购物车中每个产品的值。

我已经设法让工作正常,我可以将产品(在本例中为 Motorcars)添加到我的购物篮中并调整价值,并根据汽车是否有运动套件或敞篷车来增加/减少价值。

http://jsfiddle.net/FloatLeft/UjRrJ/

但是,不是添加产品(“添加汽车”按钮)然后选择汽车类型,而是希望能够通过单击按钮(例如单击在“添加宝马”按钮上 - 目前没有任何作用)。

然而,我的简单大脑无法弄清楚如何将按钮绑定到集合中的特定汽车。我想我可以通过创建一个遍历集合并找到类型与字符串匹配的汽车的函数来检索汽车,例如

    function GetCar(carType) {
        for (var i = 0; i < sampleCars.length; i++) {
            if (sampleCars[i].Type == carType) {
                return sampleCars[i];
            }
        }
    }

所以基本上我想知道如何将“添加宝马”按钮的点击事件绑定到集合中的特定汽车并将其添加到我的购物车中。

4

1 回答 1

3

如果您计划制作多个按钮,您可以创建一个函数,该函数可以创建可以接受汽车类型的事件处理程序。

self.addSpecificCarLine = function (carType) {
    return function () {
        var car = ko.utils.arrayFirst(sampleCars, function (car) {
            return car.Type === carType;
        });
        var cartLine = new CartLine();
        cartLine.car(car);
        self.lines.push(cartLine);
    };
};

然后你可以像这样绑定到处理程序:

<button data-bind='click: addSpecificCarLine("BMW")'>Add BMW</button>

更新的小提琴

于 2012-10-05T18:12:10.397 回答