KnockoutJS:在 Select 中的每个选项上调用单击事件

2024-04-12

我希望每当用户单击 SELECT 元素中的选项时 Knockout 都会调用一个事件。

这是我的 JavaScript:

function ReservationsViewModel() {
    this.availableMeals = [
        { mealName: "Standard (sandwich)", price: 0 },
        { mealName: "Premium (lobster)", price: 34.95 },
        { mealName: "Ultimate (whole zebra)", price: 290 }
    ];
}

ko.applyBindings(new ReservationsViewModel());

这是我的 HTML:

<select data-bind="foreach: availableMeals">
    <option data-bind="text: mealName, click: alert('hello')" />
</select>

但是当我运行它时,应用程序显示“hello”三次,即使实际上没有单击任何选项。

我究竟做错了什么?


你应该使用change绑定而不是click and optionsText绑定而不是option标记和使用function in change绑定而不是仅仅调用alert:

<select data-bind="options: availableMeals, optionsText: 'mealName', value: selectedMeal, event: {change: onChange}">
</select>

function Meal(name, price){
    var self = this;

    self.mealName = name;
    self.price =  price;    
}

function ReservationsViewModel() {
    var self = this;
    self.availableMeals = ko.observableArray(
        [new Meal("Standard (sandwich)", 0),
         new Meal("Premium (lobster)", 34.95),
         new Meal("Ultimate (whole zebra)", 290)]);


    self.selectedMeal = ko.observable(self.availableMeals()[0]);

    self.onChange = function() {
        alert("Hello");
    };
}

ko.applyBindings(new ReservationsViewModel());

这是工作示例:http://jsfiddle.net/Q8QLX/ http://jsfiddle.net/Q8QLX/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KnockoutJS:在 Select 中的每个选项上调用单击事件 的相关文章

随机推荐