我試圖從2個網格中選擇的項目連接到數組進行進一步處理,但我不想影響任何數據源中的任何更改,這是證明問題的,因爲第一個數據源似乎(在CONCAT後),包含我從第一個下拉的項目...將來自Kendo Datasources的數據連接到一個新陣列
var allItems = JSLINQ(grid1.data("kendoGrid").dataSource.data())
.Concat(grid2.data("kendoGrid").dataSource.data())
.ToArray();
在JSLINQ concat函數的源代碼是這樣做的......
Concat: function (array) {
var arr = array.items || array;
return new JSLINQ(this.items.concat(arr));
}
this.items是從我可以告訴「grid1.data(」kendoGrid「)。dataSource.dat a()「 ,我試圖用」grid2.data(「kendoGrid」).dataSource.data()「中的項目來構建一個新數組,然後根據選擇條件對其進行篩選。
有沒有人有任何這方面的經驗/一種方式來說「我想從未連接到源的數據源的副本」?
更新: 這裏的基本功能依賴於有一個標準的JS數組,似乎kendo返回一個可觀察數組對象(特定於kendo,並且缺少concat函數)。
以上的CONCAT調用(因爲它不存在)的異常結果的實現,所以我重寫的功能是這樣的......
Concat: function (array) {
//var arr = array.items || array;
//return new JSLINQ(this.items.concat(arr));
var retVal = new Array();
for (var i = 0; i < this.items.length; i++) {
var clone = JSON.parse(JSON.stringify(this.items[i]));
retVal.push(clone);
}
for (var i = 0; i < array.length; i++) {
var clone = JSON.parse(JSON.stringify(array[i]));
this.items.push(clone);
}
return new JSLINQ(retVal);
},
導致重複的問題,我上文提到的。
所以看起來我在這裏的錯誤與可觀察數組有關,但我不知道如何從數據源中獲得「detatched item」/「array」。
的toJSON()的工作更復雜的觀察對象以及,剝離了所有的方法和事件返回一個新的非 - 可觀察物體。另一個示例用法是通過調用toJSON()來克隆一個observable,並將結果提供給一個新的構造函數。 – NigelK