2

以下のコードで。「self.Addticket-function の「self.ticketCollection.indexOf(t)」が常に -1 になるのはなぜですか ???

page_load の後、New (newTicket)、次に ADD (addTicket) をプッシュします。これは正常に機能し、("ny","-1") のレコードが ticketCollection に追加されます。次に、これを繰り返すと、まったく同じレコードが追加されます。デバッガー (FireBug) は、「self.ticketCollection.indexOf(t)」がどちらの場合も -1 であることを教えてくれます。なんで?

function Ticket(ticketname, cost) {
    var self = this;

    //alert("ikke implementer fullt ut ennå!");

    self.ticketname = ko.observable(ticketname);
    self.cost= ko.observable(cost);

} // end Ticket

//==============================================================

function ViewModel() {
var self = this;

//------ initiate ----------------------------------------------

// the product we want to view/edit
self.selectedTicket = ko.observable();

self.ticketCollection = ko.observableArray(
    [
        new Ticket("Bus", "$2"),
        new Ticket("Ferry", "$3"),
        new Ticket("Bicycle", "$1")
    ]);

// selected item from ticket list-view
self.listViewSelectedItem = ko.observable();

// push any changes in the list view to our main selectedTicket
self.listViewSelectedItem.subscribe(function (ticket) {
    if (ticket) {
        self.selectedTicket(ticket);
    }
}); // self.listViewSelectedItem.subscribe //


//---- NEW button pressed --------------------------------------
self.newTicket = function () {

        // create a new instance of a Ticket
        var t = new Ticket("ny", "-1");

        // set the selected Ticket to out new instance
        self.selectedTicket(t);

    }.bind(this);

//---- ADD to collection -----------------------------------------

self.addTicket = function () {
        //alert("ADD is pushed!");

        // get a reference to out currently selected product
        var t = self.selectedTicket();

        // ignore if null
        if (!t) { return; }

        // check to see that the ticket doesn\t already exist
        if (self.ticketCollection.indexOf(t) > -1) {
            return;
        }

        // add the product to the collection
        self.ticketCollection.push(t);

        // clear out the selected product
        self.selectedTicket(t);
        //self.listViewSelectedItem(t)

    };
} // end ViewModel

事前にサンクス!

アスレ:)

4

1 に答える 1