2017-02-09 4 views
0

2グリッドから選択したアイテムを後で処理するために配列に連結しようとしていますが、データソースの変更に影響を与えたくなく、これが証明しています最初のデータソースは、(連結後)私は最初から引くアイテムが含まれているようだと...剣道データソースのデータを新しい配列に連結する

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() "の項目で新しい配列を作成しようとしていますが、これを選択基準に基づいてフィルタリングします。

誰でもこの「/ソース」に「ソースに接続されていないソースからデータアイテムのコピーが必要です」と言う経験がありますか?

UPDATE: ここでの基本機能は、標準のJS配列を使用することに依存しています。剣道は観測可能な配列オブジェクト(剣道に固有で、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); 
}, 

I上記の通り。

ここで私が持っているエラーは、観測可能な配列と関係がありますが、データソースから「デタッチされたアイテム」/「配列」を取得する方法がわかりません。

答えて

0

[OK]を、それは私の呼び入力を操作することで、要するに観察可能な配列は、配列にして観察可能な配列を回す(奇数命名、ちょっとこれは剣道右である!)

にtoJSON()メソッドが判明してJSLINQ方法に

var allItems = JSLINQ(grid1.data("kendoGrid").dataSource.data().toJSON()) 
    .Concat(grid2.data("kendoGrid").dataSource.data().toJSON()) 
    .ToArray(); 
+0

toJSON()が新しい非を返すために、すべてのメソッドとイベントを剥ぎ取るだけでなく、より複雑な観察可能なオブジェクト上で動作します...私が期待するように私は、通常のJSの動作を持って、これを含めるには-observableオブジェクト。もう1つの使用例は、toJSON()を呼び出し、その結果を新しいコンストラクタのコンストラクタに渡すことによって、オブザーバブルを複製することです。 – NigelK

関連する問題