2012-07-20 33 views
0

我已經使用knockout.js編寫了一個應用程序,並且我想以批處理模式運行應用程序(例如,使用node.js)。Stubs for knockout.js

這是一個模擬應用程序,所以交互式視覺版本綁定到html前端,但此外我想在批處理模式下運行模擬並生成大量數據進行統計分析,所以在該模式下,我希望所有的ko代碼都消失,因爲我不需要它,並且不想引起性能開銷。

例與可視化:

function Queue() { 
    var self = this; 
    self.items = ko.observableArray(); 
    self.rate = ko.observable(5); 
    ... 
} 

... 
queue.rate(7); 

在批處理模式相同的:

function Queue() { 
    var self = this; 
    self.items = []; 
    self.rate = 5; 
} 

... 
queue.rate = 5; 

是否有一個簡單的方法來做到這一點?

我正在考慮爲ko創建一個存根,刪除訂閱相關的邏輯,但也許有一個更簡單的方法?

+0

分流ko的另一個原因是,它不會像節點下那樣運行,因爲它取決於存在的DOM ... – sagism 2012-07-20 16:25:49

回答

1

您當然可以使用ko.toJS(myObject)來獲取對象的「乾淨」版本,但是您仍然會產生一些開銷,創建可觀察的結果,最終只是展開以獲得乾淨的對象。

我的想法是爲您創建一個存根,如您所說,只需返回傳遞給它的值,如果您的目標是在兩者之間共享代碼。

+0

Thanks RP。我會嘗試爲ko創建存根。 – sagism 2012-07-20 16:26:22

+0

關於如何爲observableArray創建存根的任何建議? – sagism 2012-07-20 21:10:20

+0

不確定你的確切結構,但是你需要多於:'ko.observableArray = function(initialValue){return initialValue || []; };' – 2012-07-20 21:16:52