为什么我的ItemFileReadStore数据属性为null?

时间:2015-04-20 09:30:47

标签: dojo

我正在使用Dojo 1.10使用AMD创建ItemFileReadStore对象。虽然控制台在创建存储时没有报告任何错误,但我可以从调试器中看到store.data为null。我在我的浏览器控制台(chrome和firefox)上尝试了相同的代码,但也有同样的问题(存储数据为空)。有人可以帮我弄清楚我是否遗漏了什么?

    require(["dojo/ready",
        "dojo/on",
        "dijit/registry",
        "dojo/data/ItemFileReadStore"
    ], function(ready, on, registry, ItemFileReadStore) {

        var resultTablecolumns = [{
            label: 'ID',
            attr: 'id',
            sortable: true,
            sorted: 'ascending',
            width: 60,
            vAlignment: "middle",
            alignment: "right"
        }, {
            label: 'Hop',
            attr: 'hop',
            sortable: true,
            sorted: 'ascending',
            width: 100,
            vAlignment: "middle",
            alignment: "right"
        }, {
            label: 'Role',
            attr: 'role',
            sortable: true,
            sorted: 'ascending',
            width: 100,
            vAlignment: "middle",
            alignment: "right"
        }, {
            label: 'Status',
            attr: 'status',
            sortable: true,
            sorted: 'ascending',
            width: 100,
            vAlignment: "middle",
            alignment: "right"
        }];

        var storeItems = {
            "identifier": "id",
            "items": [{
                "id": "1",
                "hop": "first",
                "role": "classification",
                "status": ""
            }, {
                "id": "2",
                "hop": "second",
                "role": "propagation",
                "status": "info"
            }, {
                "id": "3",
                "hop": "third",
                "role": "propagation",
                "status": "warning"
            }, {
                "id": "4",
                "hop": "fourth",
                "role": "propagation",
                "status": "error"
            }, {
                "id": "5",
                "hop": "fifth",
                "role": "enforcement",
                "status": ""
            }]
        };

        var resultTableStore = new ItemFileReadStore({
            data: storeItems
        });
        console.log("resultTableStore === ", resultTableStore);

});

2 个答案:

答案 0 :(得分:0)

您能告诉我们您的HTML吗?

这是一个有效的jsFiddle

require(["dojo/data/ItemFileReadStore","dojo/dom", "dojo/domReady!"], function(ItemFileReadStore, dom ){
    var storeItems = {
            "identifier": "id",
            "items": [{
                "id": "1",
                "hop": "first",
                "role": "classification",
                "status": ""
            }]
       };
    var store = new ItemFileReadStore({data: storeItems});
    console.log("ItemFileReadStore",ItemFileReadStore);
    dom.byId('store').innerHTML =   store  ;

});

街区有一个新的孩子取代上述商店,即dstore。试试吧。

答案 1 :(得分:0)

好的,我在一位同事的帮助下想通了。 我实际上正在创建一个ItemFileReadStore并在构建数据网格时使用它。网格没有显示,因为它的父级在创建时被隐藏,因此将其宽度设置为零。 我从他那里了解到数据参数是在第一次获取时处理的,并用于填充内部结构。然后它被淘汰,因为它不再使用。

所以在这种情况下,发生的事情是ItemFileReadStore的数据参数在创建网格时在首次提取时处理,然后设置为null。