QuintOut.js:在数据结合事件中访问父级集合



假设我有

<button type="button" data-bind="click: actions.remove">×</button>

和一个处理程序

var actions = {
    remove: function(item) {
        ?array?.remove(item); // ?array? is a containing array, accessed somehow
    }
}

如何找到?array?,以便在任何foreach绑定中使用相同的button

澄清:
如果我将remove放入视图模型,我知道该怎么做。但是,视图模型包含层次阵列,我真的不想只是为了在正确的位置获取方法。查看模型还偶尔会借助ko.mapping从服务器更新,但这并未在新数据中添加任何方法。这就是为什么我分别实施处理程序。

您尝试这样的事情。

<div data-bind="foreach: someArray">
    <button type="button" data-bind="click: $parent.actions.remove">x</button>
</div>

//Inside your viewmodel.
var self = this;
self.someArray = ko.observableArray();
self.actions = {
remove: function() {
    self.someArray.remove(this); // ?array? is a containing array, accessed somehow
}
}

编辑:对不起,我误读了您的意思。您可以尝试这样的事情,使其适合任何绑定。

<div data-bind="foreach: someArray">
    <button type="button" data-bind="click: function() {$parent.actions.remove($parent.someArray(), $data}">x</button>
</div>

//Inside your viewmodel.
var self = this;
self.someArray = ko.observableArray();
self.actions = {
remove: function(arr, item) {
    arr.remove(item); // ?array? is a containing array, accessed somehow
}
}

目前是不可能的。

我提出了一个新的淘汰问题(当前开放):
允许通过绑定上下文访问当前数组。

也相关:支持$ last in foreach。

最新更新