0

私の質問を説明するために、いくつかの紹介を提供する必要があります。

実際のインターフェイスのMyViewModelには約5、6のプロパティのグループがあるため、この例は単純化されています。

Album {
    title: 'string'
    artists: [{…}, {…}],
    genres: [{…}, {…}]
}

アーティスト/ジャンル配列のオブジェクトは、構造が同じです。

item = {
    id: 1,
    title: 'string'
}

プロパティの類似したグループについて、私は互いに類似した機能を持っています:

self.AddArtist();
self.RemoveArtist(artist);
self.AddGenre();
self.RemoveGenre(genre);

質問:AddItem(array)/RemoveItem(array, item) ViewModelのプロパティのすべてのグループで操作を処理するような2つの関数だけを持つことができますか?

4

1 に答える 1

1

次のような構造を使用できます。

var Album = function() {
    var self = this;

    self.title = 'string';

    self.groups = {
        artists: ko.observableArray(),
        genres: ko.observableArray()        
    };    

    self.addItem = function(groupName, item) {
        self.groups[groupName].push(item);
    };

    self.removeItem = function(groupName, item) {
        self.groups[groupName].remove(item);
    };
}

使用法:

album = new Album();
album.addItem('artists', 'test');
于 2012-11-06T11:55:34.870 に答える