0

以下のクラスで

thisinnew SeatReservation("Steve", this.availableMeals[0]),は inside を参照しています。正しいものを参照する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]));
    }
}
4

2 に答える 2

5

selfコメントアウトした変数を使用する

self.availableMeals[0]
于 2013-04-19T14:05:09.580 に答える
1

thisコンテキストを切り替えなかったので、それもうまくいくはずです。HTML のバインディングに問題がある可能性があります。うまくいけばあなたを助けるかもしれないJS Fiddleを作成しました。

編集:ああ、もしあなたが 内のステートメントを意味するならaddSeat、あなたは本当にself変数を必要とするか、正しいオブジェクトを次のように適用しますthis:

this.addSeat = function() {
    this.seats.push(new SeatReservation("", this.availableMeals[0]));
}.apply(this);
于 2013-04-19T14:19:35.167 に答える