尝试将新项目添加到JSON存储区时,我收到“newItem()未传递新项目的标识”错误

时间:2014-04-01 08:29:06

标签: javascript json dojo

我已经在本网站上看到过有关同一问题的其他帖子,并且我已尝试过给出的解决方案。我也访问了可能提供解决方案的链接,但我仍然遇到同样的错误。

我正在使用DOJO和一些简单的事情,甚至没有工作

    myStore.newItem({id: 'test', otherfield: 'otherinfohere'});
    myStore.save();

据说" newItem()没有传递新项目的标识"如果您没有为新项目提供标识符,则会出现错误。 这个的全部目的(以防任何人可以提供一个好主意或之前做过类似的事情)是我想创建一个显示来自特定商店的信息的数据网格。问题是,在该商店中,所有商品可能没有相同的结构。例如:

我可能有一个看起来像这样的商店

{identifier: 'id',
              label: 'name',
              items: [
                { id:'1', name:'Ecuador',           capital:'Quito' },
                { id:'2', name:'Egypt',             capital:'Cairo' },
                { id:'3', name:'El Salvador',       capital:'San Salvador' , additionalField: 'otherinfohere'},
                { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', additionalField: 'otherinfohere'},
        ]}

这是可能的,因为我是在Spring Controller中构建存储的人(我也使用Spring Framework)来自本地存储在Berkeley DB中的信息。所以我需要的是一个动态布局的数据网格,因为我不希望在视图中显示较少字段的行中的空格,我需要在同一个商店中显示所有信息时间,但我不知道该怎么做。 我想通过创建一个只有1个字段的简单布局来做到这一点。在其中我将从我在运行时动态创建的商店加载数据。商店中的数据将由HTML与来自原始商店的值组合在一起,因此我可以获得类似这样的内容,它位于JavaScript对象的属性中,让浏览器为我解析它:

    <div><span>id: originalID </span>....</div>

这当然是一个简单的例子,我正在寻找的html布局要复杂得多,但我认为将它作为字符串传递给对象可能会有所帮助。 问题是,我甚至不知道这个想法是否会奏效,因为每当我尝试向我的二级商店添加价值时我都会收到错误。

rdb.modules.monitor.historicStore.fetch({onComplete: function(items, request){
            for (var i = 0; i < items.length; i++){
                var item = items[i];
                var obj = new Object();            
                obj.id = rdb.modules.monitor.historicStore.getValue(item, "id");;
                var html = "<div><span>";
                html += rdb.modules.monitor.historicStore.getValue(item, "sql");
                html += "</span></div>";
                obj.html = html;
                myStore.store.newItem(obj);                 
            }
        }});

在此背景下&#34; historicalStore&#34;指的是具有我需要转换并添加到&#34; myStore&#34;的值的JSON商店。在我添加了一些HTML之后。

我希望你能够了解我想要做的事情。如果有人能帮助我,我们中的任何一个都会非常感激。提前致谢

1 个答案:

答案 0 :(得分:0)

关于商店的问题: - “id”对于商店是必需的,如果它将用于网格(datagrid,EnhancedGrid等等)。仅通过网格数据结构基于“id”属性处理项目。

通常,id可以是循环变量/自动增量,以避免像你所说的任何情况。在将商店添加到网格之前,请确保所有商品都具有id属性。您可以编写一个循环遍历每个项目并检查此项的函数,否则为该项目的id属性添加一个自动递增值。