브랜드 목록이 있고 브랜드에 자동차 목록이 있습니다. 녹아웃에서 간단한 뷰 모델을 http://jsfiddle.net/PZqEk/1/에 선언했습니다. 제거 버튼을 클릭하면 this.cars는 removeCar 함수에서 정의되지 않습니다. 가장 좋은 방법으로 클릭 한 자동차를 삭제하는 방법은 무엇입니까?중첩 된 관찰 가능 배열에서 녹아웃 함수를 호출하는 방법
HTML :
<h1 data-bind="text:title"></h1>
<table>
<tbody data-bind="foreach: brands">
<tr>
<td>
<span data-bind="text: nameOfBrand"></span>
<ul data-bind="foreach: cars">
<li>
<span data-bind="text: nameOfCar"></span>
(<span data-bind="text: yearOfCar"></span>)
<input data-bind="click: $root.removeCar" type="button" value="remove"/>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
자바 스크립트 :
function RootModel()
{
this.title = ko.observable("Dummy Title");
this.brands = ko.observableArray();
var b1 = new brandModel("Audi");
b1.cars.push(new carModel("A3", 2005));
b1.cars.push(new carModel("A6", 2005));
var b2 = new brandModel("Volkswagen");
b2.cars.push(new carModel("Golf", 2010));
b2.cars.push(new carModel("Passat", 2008));
b2.cars.push(new carModel("Polo", 2012));
this.brands.push(b1);
this.brands.push(b2);
}
function brandModel(name)
{
this.nameOfBrand = ko.observable(name);
this.cars = ko.observableArray();
this.removeCar = function(car){
this.cars.remove(car); // this.cars = undefined;
}
}
function carModel(name, year){
this.nameOfCar = ko.observable(name);
this.yearOfCar = ko.observable(year);
}
ko.applyBindings(new RootModel());
감사
예, 확실합니다. 선언 된 var self = this; 그리고 그 일 : –