Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript Knockout JS removeAll()在第二次调用时失败_Javascript_Knockout.js - Fatal编程技术网

Javascript Knockout JS removeAll()在第二次调用时失败

Javascript Knockout JS removeAll()在第二次调用时失败,javascript,knockout.js,Javascript,Knockout.js,在我的视图模型中,有两种方法可以重置可观察数组中的数据。当我第一次单击调用newGame方法的按钮时,一切正常。但是,第二次单击该按钮时,出现了一个javascript错误 self.newGame = function () { // reset the zones self.resetBoardState(); // more stuff here but clipped for brevity ... } self

在我的视图模型中,有两种方法可以重置可观察数组中的数据。当我第一次单击调用
newGame
方法的按钮时,一切正常。但是,第二次单击该按钮时,出现了一个javascript错误

    self.newGame = function () {
        // reset the zones
        self.resetBoardState();

        // more stuff here but clipped for brevity ...
    }

    self.resetBoardState = function () {
        // clear all zones...
        self.library.removeAll();

        // place all cards in deck into library ...
        self.library = JSON.parse(JSON.stringify(self.deck));
    }
我在javascript控制台中遇到的错误是:

Uncaught TypeError: Object [object Array] has no method 'removeAll'
我这里有一个图标,这样就可以看到整个视图模型。如果您第一次单击“新建游戏”按钮,一切都会正常运行。您还可以单击“绘制卡片”按钮,它也可以正常工作。但是,单击“Mulligan”按钮会导致与再次单击“New Game”相同的错误


如何才能使此功能正常运行?

self.library
最初是一个observableArray,但您的重置将其转换为普通数组。相反,只需设置现有可观察对象的值

更换线路

self.library=JSON.parse(JSON.stringify(self.deck))

self.library(JSON.parse(JSON.stringify(self.deck))