我的解決方案有點類似於James的,但我更喜歡將回調傳遞給對象,而不是整個父列表; (和我辦卡建設不同)
因此該顯卡的構造看起來像
var Card = function (id, title, description, contentItemId, removeCallback) {
//Rest unchanged
self.archive = function() {
removeCallback(self);
};
}
然後,你的列表將是這個樣子:(注意,從cards
到cardData
的變化)
var List = function (id, name, cardData, sortOrder) {
var self = this;
function removeCard(card) {
self.removeCard(card);
}
self.cards = ko.observableArray(cardData.map(function (data) {
//Construct a card object from the provided data
return new Card(data.id, data.title, data.description, data.contentItemId, removeCard);
}));
//Rest unchanged
}
最後,構建你的列表時,你會改變從
new Card(1, "Document all code", "Document all classes, methods and properties in source code.", -1),
每張卡
到
{
id: 1,
name: "Document all code",
description: "Document all classes, methods and properties in source code.",
contentItemId: -1
}
JSFiddle
請不要忘記給予好評有用的答案 –