2016-12-30 8 views
0

リスト内の名前をクリックして観測可能な配列から項目を削除したいと考えています。しかし、アイテムがテーブルまたはリストに追加されるたびにclickイベントが発生することがわかりました。私の場合、リスト内のアイテムをクリックして削除することができますが、remove to clickイベントをバインドすると、常に前のアイテムが削除されます。 clickイベントを使用せずにこれを行う方法はありますか?以下では、問題を示すノックアウトチュートリアルの少し修正されたバージョンであるjsFiddleを含めます。リストに追加するとknockout JSのクリックイベントが発生する

https://jsfiddle.net/hardrock302/93wdcm65/

ここでは、コードです:

<h2>Your seat reservations</h2> 

<table> 
<thead><tr> 
    <th>Passenger name</th><th>Meal</th><th>Surcharge</th><th></th> 
</tr></thead> 
<!-- Todo: Generate table body --> 
<tbody data-bind="foreach: seats"> 
<tr> 
<td data-bind="text:name, click:alert('test')"></td> 
</tr> 
</tbody> 
</table> 

// Class to represent a row in the seat reservations grid 
function SeatReservation(name, initialMeal) { 
var self = this; 
self.name = name; 
self.meal = ko.observable(initialMeal); 
} 

// Overall viewmodel for this screen, along with initial state 
function ReservationsViewModel()  { 
var self = this; 

// 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 } 
];  

// Editable data 
self.seats = ko.observableArray([ 
    new SeatReservation("Steve", self.availableMeals[0]), 
    new SeatReservation("Bert", self.availableMeals[0]) 
]); 
} 

ko.applyBindings(new ReservationsViewModel()); 

答えて

関連する問題