Json 组合框和值发生冲突

Json 组合框和值发生冲突,json,dojo,Json,Dojo,我将dojo组合框与json一起使用。 我有一个错误:列表中的项具有标识符:[id]。值冲突:[48] 如果我看一下我的原始json,我只有两个id分别为41和48的对象 但是当我查看ItemFileReadStore时,我有四个对象,其中一个是id=41的对象,另外三个是id=48的相同重复对象 ItemFileReadStore使用的方法是: var store = new dojo.data.ItemFileReadStore( { data: { id

我将dojo组合框与json一起使用。 我有一个错误:列表中的项具有标识符:[id]。值冲突:[48] 如果我看一下我的原始json,我只有两个id分别为41和48的对象 但是当我查看ItemFileReadStore时,我有四个对象,其中一个是id=41的对象,另外三个是id=48的相同重复对象

ItemFileReadStore使用的方法是:

var store = new dojo.data.ItemFileReadStore( { data: {
                  identifier: "id",
                  items: data
                }});

                console.log(store);

                var filteringSelect = new dijit.form.ComboBox({
                    store: store,
                    searchAttr: "nafn"
                },
                "nafn");

问题的根源是什么?

我发现您的代码中存在某些错误

1) dojo.data.ItemFileReadStore要求数据采用特定格式,但您缺少该格式。 格式是这样的

var storeData = {identifier : 'uniqueIdOfEachItem', label : 'displayName', items : [
  {uniqueIdOfEachItem:1,displayName:'somename'},
  {uniqueIdOfEachItem:2,displayName:'somename2'}
]}
var store = new dojo.data.ItemFileReadStore({data: storeData })
var filteringSelect = new dijit.form.ComboBox({
                store: store ,
                searchAttr: "displayName"
            },
            "id_of_element_in_html_where_your_combo_will_sit");
2) 组合框中的searchAttr应该是商店项目的道具之一(这里是uniqueIdOfEachItem或displayName)


3) 请确保商店中每个商品的标识符(此处为uniqueIdOfEachItem)都是唯一的,如果它不是唯一的,则组合框将不起作用,并抛出一些与您提到的类似的错误。

我确实更正了我的代码。我还发现问题在于我的实体有两个自引用字段,因此可以多次找到相同的id

在我的例子中,一个人有两个父母,母亲父亲,他们也是身份证的人

它看起来像:

[{id:'1',name:'john',father:{id:'2',name:'gils'},mother:{id:'3',name:'loa'}}]
[{id:'1',name:'nora',father:{id:'2',name:'gils'},mother:{id:'3',name:'loa'}}]
我有一个冲突,因为id[2]发生冲突


我必须删除两个字段“母亲”和“父亲”,这就解决了问题。

看不出您显示的代码有任何错误。。您可能还想发布
数据的内容
,或者发布更多的代码(如果有的话)。