我认为标题非常具有误导性,但问题很简单。
好吧,让我来正确看待这一点 - fiddler .
我有三个模型:BoardViewModel、List、Card
好吧,长话短说,list
模型创建了一个名为 cards
的数组。
self.cards = ko.observableArray(cards);
(第 79 行)
Knockout 反过来将 myObservableArray.remove()
公开为 ko.observableArray()
的一部分。
这反过来又允许我放弃像这样达到其目的的卡片
self.cards.remove(card);
(第 99 行)
问:有什么办法可以从card
模型中调用remove()吗?
或者我是否需要在 List 模型中定义另一个函数并传递 card
对象,以便能够进行与第 99 行相同的调用?
self.archive = 函数(卡)
(第 68 行)
提示:点击编辑链接/按钮查找存档按钮
最佳答案
其他答案都很好,但似乎您正在以一种令人困惑的方式解决问题。将卡片作为一个类的整个想法是,它不需要知道包含它的数组(如果它包含在数组中)。
在 View 中处理此问题的首选方法是,如果您的卡片上有“删除”按钮,则在 View 中写入以下内容:
<div data-bind="foreach: cards">
<div class="card">
<div class="content"> ... </div>
<button data-bind="click: $parent.cards.remove">Remove</button>
</div>
</div>
这样,您就可以将卡片类与其容器分开并且在此特定 View 中以一种优雅的方式处理从其容器中删除卡片的操作。
关于knockout.js - 如何从子模型调用父方法(knockout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973855/