嵌套this指向错误的变量



new SeatReservation("Steve", this.availableMeals[0]),中的this指的是seats内部,如何使其指的是正确的availableMeals

我可以去new SeatReservation("Steve", parent.this.availableMeals[0]),

// Overall viewmodel for this screen, along with initial state
function ReservationsViewModel() {
    //var self = this;
    // Non-editable catalog data - would come from the server
    this.availableMeals = [
        { mealName: "Standard (sandwich)", price: 0 },
        { mealName: "Premium (lobster)", price: 34.95 },
        { mealName: "Ultimate (whole zebra)", price: 290 }
    ];    
    // Editable data
    this.seats = ko.observableArray([
        new SeatReservation("Steve", this.availableMeals[0]),
        new SeatReservation("Bert", this.availableMeals[0])
    ]);
    // Operations
    this.addSeat = function() {
        self.seats.push(new SeatReservation("", this.availableMeals[0]));
    }
}

使用您注释掉的self变量

self.availableMeals[0]

它应该与this工作,因为你没有切换上下文。也许HTML中的绑定有问题。我创建了一个JS小提琴,希望能帮助你。

编辑:啊,如果你指的是addSeat中的语句,你真的需要self变量,或者你应用正确的对象作为this:

this.addSeat = function() {
    this.seats.push(new SeatReservation("", this.availableMeals[0]));
}.apply(this);

最新更新