Json 组合框和值发生冲突
我将dojo组合框与json一起使用。 我有一个错误:列表中的项具有标识符:[id]。值冲突:[48] 如果我看一下我的原始json,我只有两个id分别为41和48的对象 但是当我查看ItemFileReadStore时,我有四个对象,其中一个是id=41的对象,另外三个是id=48的相同重复对象 ItemFileReadStore使用的方法是: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
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]发生冲突
我必须删除两个字段“母亲”和“父亲”,这就解决了问题。看不出您显示的代码有任何错误。。您可能还想发布
数据的内容
,或者发布更多的代码(如果有的话)。