2014-01-16 32 views
0

在我的视图模型中,我有一些方法可以重置可观察数组中的数据。当我第一次点击一个叫做newGame方法的按钮时,一切正常。但是,第二次点击按钮我得到一个JavaScript错误。Knockout JS removeAll()第二次调用

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' 

我有一个JS Fiddle这里,所以整体视图模型可以看出。如果您第一次点击“新游戏”按钮,一切正常。您也可以点击“绘制卡片”按钮,它的行为也是正确的。然而,点击“Mulligan”按钮会再次点击“New Game”会导致相同的错误。

我能做些什么来获得这个功能?

回答

2

self.library最初是一个observableArray,但是您的重置会将它变成一个普通数组。相反,只需设置现有观察值的值。

更换线

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

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

+0

谢谢。现在看来很明显,你指出了它。 –

相关问题