-1

我有这个代码

dojo.ready(function(){
  inventoryStore = new dojo.store.JsonRest({
    target: "http://localhost:9080/driver/dojoMVC",
    idProperty: "name",
    put: function(object, options){
      if(object.quantity < 0){
    throw new Error("quantity must not be negative");
      }
    }
});
results = inventoryStore.query("");
var storeData =  new dojo.data.ItemFileWriteStore({ 
  data:dojo.fromJson(results)
});

gridLayout = [
  { name: 'Name', field: 'name', editable: true},
  { name: 'Quantity', field: 'quantity'},
  { name: 'Category', field: 'category'}];
var grid = new dojox.grid.DataGrid({
  store: storeData,
  clientSort: true, 
  structure: gridLayout
}, dojo.byId("gridElement"));
grid.startup();

当我运行它时,我在 FF 控制台中收到这个奇怪的错误

SyntaxError: missing ] after element list
[Break On This Error]   

([object Object])

json.js (line 26, col 9)

谁能帮我这个?谢谢

4

2 回答 2

0

问题出在您发布的代码中,该代码在第 26 行附近的最后有一个语法错误。您开始dojo.ready({但没有完成});

在这里,重新格式化以使其更明显:

dojo.ready(function(){
    inventoryStore = new dojo.store.JsonRest({
        target: "http://localhost:9080/driver/dojoMVC",
        idProperty: "name",
        put: function(object, options){
            if(object.quantity < 0){
                throw new Error("quantity must not be negative");
            }
        }
    });
    results = inventoryStore.query("");
    var storeData =  new dojo.data.ItemFileWriteStore({ 
        data:dojo.fromJson(results)
    });

    gridLayout = [
        { name: 'Name', field: 'name', editable: true},
        { name: 'Quantity', field: 'quantity'},
        { name: 'Category', field: 'category'}
    ];
    var grid = new dojox.grid.DataGrid({
        store: storeData,
        clientSort: true, 
        structure: gridLayout
    }, dojo.byId("gridElement"));

    grid.startup();

尝试添加:

});

此外,您在其中缺少一些var关键字。

于 2013-09-06T20:44:42.773 回答
0

也许你必须像这样设置你的布局:

        var layout = [[
            {name:"Id", field: "ident", width:"30%"},
            {name:"Name", field: "name", width:"70%"}
            ]];

在 Ev'ry Example 中,我在 dojo 中找到了布局在双括号中。这可以解释为什么错误说“缺少]”。

看: http ://dojotoolkit.org/reference-guide/1.9/dojo/data/ItemFileWriteStore.html?highlight=itemfilewritestore#itemfilewritestore-changes-reflected-in-dojox-data-datagrid

更新1

所以错误在于商店。您是否尝试过填写以下数据:

results = inventoryStore.query( name : "*"); // to query all items

您是否检查过“结果”中有任何结果?

var storeData =  new dojo.data.ItemFileWriteStore({ 
                 data:results
                 });

毕竟我会尝试在没有 dojo.fromJson 的情况下填写数据。

试试看。

问候,米里亚姆

于 2013-09-09T08:31:59.237 回答