1

私はしばらくの間これに取り組んできました、そして私はいくつかの助けが必要です。ビューのレンダリングに使用しているKOモデルとビューモデルがあります。この場合、オブジェクトはバンドです。このバンドには、観察可能なアルバムの配列があります。バンドモデルからアルバムを削除する方法がわかりません。

function band(item) {
    var self = this;
    self.name = ko.observable(item.name);
    self.country = ko.observable(item.country);
    self.state = ko.observable(item.state);
    self.city = ko.observable(item.city);
    self.emailAddress = ko.observable(item.emailAddress);
    self.albums = ko.observableArray(item.albums);
}

function User() {
    var self = this;
    self.bands = ko.observableArray([]);
    self.singleBand = ko.observable();

    //Get Bands from data source and create new models to add to bands array
    $.getJSON("/api/band", function (allData) {       
        $.each(allData, function (index, item) {
            self.bands.push(new band(item));
        });
    });

    //function to get a single band from a rendered list
    self.getThisBand = function (item) {
        self.bands = ko.observableArray(null);
        self.singleBand(item); 
    };

    //remove band from singleBands' album array
    self.removeAlbum = function (albumToDelete) {

        //how to delete album from band model
    };
}

ko.applyBindings(new User());

ロジックは非常に単純です。バンドのリストを取得し、UIのリストにバインドしています(問題はありません)。UIでバンド名をクリックすると、getThisBandメソッドをロードし、UIにデータを入力します(これも問題はありません)。singleBand.albums配列をリストにバインドしました。これには、femoveAlbumonclick関数があります。関数に渡されるデータも正しいオブジェクトです。

私が見逃している基本的なものはありますか?

4

1 に答える 1

1

現在の帯域と同じように見えるself.singleBand()ので、removeAlbum関数で次のことができます。

//remove band from singleBands' album array
self.removeAlbum = function (albumToDelete) {
    var band = self.singleBand();
    band.albums.remove(albumToDelete);
};
于 2012-10-17T02:03:12.557 に答える