use*_*507 12 javascript knockout.js
每当用户单击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());
Run Code Online (Sandbox Code Playgroud)
这是我的HTML:
<select data-bind="foreach: availableMeals">
<option data-bind="text: mealName, click: alert('hello')" />
</select>
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,即使没有实际点击任何选项,应用程序也会显示"hello"三次.
我究竟做错了什么?
Art*_*kov 15
您应该使用change,而不是绑定click和optionsText结合,而不是option标签和使用function的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());
Run Code Online (Sandbox Code Playgroud)
这是工作示例:http://jsfiddle.net/Q8QLX/
| 归档时间: |
|
| 查看次数: |
14313 次 |
| 最近记录: |