2016-06-23 1 views
0

オブジェクトストアの作成時にidPropertyを省略した場合、メモリストアに追加される後続のオブジェクトはidプロパティを取得しますが、メモリストアの作成に使用されたオブジェクトはなぜそうなりませんか?例えばidプロパティは、メモリストアの後続のオブジェクトにのみ追加されるのはなぜですか?

var employees = [{ 
    name: "Krishna", 
    topic: "Sales" 
}, { 
    name: "Mohhamad", 
    topic: "Sales" 
}]; 

var employeeStore = new Memory({ 
    data: employees, 

}); 

employeeStore.add({ name: "Joe", topic: "Marketing" }); 

私のデータはsetData(当初ストアに元のデータを置くために実行されたメソッド)がないことを

{ 
    name: "Krishna", 
    topic: "Sales" 
}, 
{ 
    name: "Mohhamad", 
    topic: "Sales" 
}, 
{ 
    id: 0.8244685191447396, 
    name: "Joe", 
    topic: "Marketing" 
} 

答えて

1

dojo/store/Memory.jsを見てみると、次のオブジェクトは、あなたが気づく含まれていますストアのputメソッドに依存します。
単純に指定されたオブジェクトをループし、インデックスを作成します。idPropertyがそこにあると想定します。 もしあなたがidPropertyを提供していないので、インデックスが完全に壊れていると思います。すべてのインデックスはundefinedにマップされます(の159行を参照)。

ただし、idPropertyにa値が追加されている場合は、putメソッドに値が追加されます。それはあなたがあなたの質問に書いていることです。

  • あなたは、空の配列を持つsetData
  • コールsetData、あなたの最初のオブジェクトをループに与えると、すべてのためにputを使用する各オブジェクトのIDがあることを確認してください:あなたができる回避策として

    それら

関連する問題