Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js KnockoutJS-在删除之前单击事件触发过快_Knockout.js - Fatal编程技术网

Knockout.js KnockoutJS-在删除之前单击事件触发过快

Knockout.js KnockoutJS-在删除之前单击事件触发过快,knockout.js,Knockout.js,我有一个视图模型,看起来像这样: self.selectedItems = ko.observableArray(); self.onBeforeUnselectItem = function (elem) { if (elem.nodeType === 1) $(elem).fadeOut(function() { $(elem).remove(); }); }; self.unselectItem = function (i

我有一个视图模型,看起来像这样:

self.selectedItems = ko.observableArray();

self.onBeforeUnselectItem = function (elem) {
    if (elem.nodeType === 1)
        $(elem).fadeOut(function() {
            $(elem).remove();
        });
};

self.unselectItem = function (item) {
    self.selectedItems.remove(item);
    self.unSelectedItems.push(item);
};
<div data-bind="foreach: {data: selectedItems, beforeRemove: onBeforeUnselectItem}">
    <span data-bind="text: Name"></span> - <a href="#" data-bind="">Remove</a>
</div>
我的观点是这样的:

self.selectedItems = ko.observableArray();

self.onBeforeUnselectItem = function (elem) {
    if (elem.nodeType === 1)
        $(elem).fadeOut(function() {
            $(elem).remove();
        });
};

self.unselectItem = function (item) {
    self.selectedItems.remove(item);
    self.unSelectedItems.push(item);
};
<div data-bind="foreach: {data: selectedItems, beforeRemove: onBeforeUnselectItem}">
    <span data-bind="text: Name"></span> - <a href="#" data-bind="">Remove</a>
</div>

当然。您已经在删除元素了。jQuery效果和类似的长时间运行的进程是异步运行的,也就是说,它们不会阻止其他JS继续运行。这就是为什么
fadeOut
有一个回调:在淡出完成后运行东西。如果您的要求是在将项目添加到
unSelectedItems
之前必须完成淡入淡出,那么您必须在回调中完成淡入淡出。

这就是我的想法。。。所以我必须从淡出的回调中移除?是的。如果有一个更复杂的过程,您可以将其抽象为一个函数,然后从回调中调用该函数,但是对于这样的一个单行程序来说,这可能太过分了\