我的解决方案有点类似于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
请不要忘记给予好评有用的答案 –