0

为了解释我的问题,我应该提供一些介绍。

我在真实界面中的 My ViewModel 中有大约 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 的所有属性组的操作吗?

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 回答