淘汰赛没有按预期工作,我的界面。我想我的错误。但我无法理解。
我有一张包含流派的专辑,包括流派的曲目:
var initialData = [{
title: 'Danny',
genres: [
{id: 21,
title: 'Noise'},
{id: 22,
title: 'EBM'}],
tracks: [
{title: 'Pony',
genres: [
{id: 21,
title: 'Noise'},
{id: 22,
title: 'EBM'}]},
{title: 'Hungry',
genres: [
{id: 21,
title: 'Noise'},
{id: 22,
title: 'EBM'}]}
]
}];
我想在专辑流派与曲目流派之间创建单向同步:
- 如果我将流派添加到专辑中,则该流派将添加到所有曲目中。
- 如果我从专辑中删除流派,则该流派将从所有曲目中删除。
- 如果我将流派添加到轨道,则该流派将仅添加到该轨道。
- 如果我从曲目中删除流派,则该流派将仅从该曲目中删除。
我的同步工作正常(除了一种情况)这个功能:
self.addGenre = function(album) {
var id = rand(),
item = {
id: id,
title: ' genre #' + id
};
album.genres.push(item);
if (album.tracks()) {
$.each(album.tracks(), function (index, track) {
track.genres.push(item);
});
}
};
self.removeGenre = function(genre) {
$.each(self.albums(), function() {
this.genres.remove(genre);
if (this.tracks()) {
$.each(this.tracks(), function (index, track) {
track.genres.remove(genre);
});
}
});
};
例外情况是,如果我想从专辑中删除默认(噪音、EBM,请参阅上面的 initialData)流派。它不起作用。
我创建了一个jsFiddle来展示这个案例,并在其中包含了很多console.log()
要调试的内容