使用AMD风格创建dojo EnhancedGrid

时间:2013-04-12 07:48:57

标签: dojo

我正在尝试使用AMD风格创建增强网格但面临问题。我为dojo 1.7.1创建了一个自定义构建

Enhancedgrid的代码不会出现任何javascript错误。我正在使用的代码是:

<script data-dojo-config="async: true" src='./dojo/dojo.js'></script>
<script data-dojo-config="async: true" src='./dojo/mydojo.js'></script>
<script>

var dojoConfig = {
    baseUrl: "./",
    tlmSiblingOfDojo: false,
    packages: [
        { name: "dojo", location: "dojo" },
        { name: "dijit", location: "dijit" },
        { name: "dojox", location: "dojox" }
    ]
};

define(["dojox/grid/EnhancedGrid","dojo/data/ItemFileWriteStore"], function(EnhancedGrid,ItemFileWriteStore){
        /*set up data store*/
        var data = {
          identifier: 'id',
          items: []
        };
        var data_list = [
          { col1: "normal", col2: false, col3: 'But are not followed by two hexadecimal', col4: 29.91},
          { col1: "important", col2: false, col3: 'Because a % sign always indicates', col4: 9.33},
          { col1: "important", col2: false, col3: 'Signs can be selectively', col4: 19.34}
        ];
        var rows = 60;
        for(var i=0, l=data_list.length; i<rows; i++){
          data.items.push(dojo.mixin({ id: i+1 }, data_list[i%l]));
        }
        var store = ItemFileWriteStore({data: data});

        /*set up layout*/
        var layout = [[
          {'name': 'Column 1', 'field': 'id'},
          {'name': 'Column 2', 'field': 'col2'},
          {'name': 'Column 3', 'field': 'col3', 'width': '230px'},
          {'name': 'Column 4', 'field': 'col4', 'width': '230px'}
    ]];

        /*create a new grid:*/
        var grid = EnhancedGrid({
            id: 'grid',
            store: store,
            structure: layout,
            rowSelector: '20px'
         },  document.createElement('div'));

        /*append the new grid to the div*/
        dojo.byId("gridDiv").appendChild(grid.domNode);

        /*Call startup() to render the grid*/
    grid.startup();
});

</script>

有人可以指出问题区域。

1 个答案:

答案 0 :(得分:1)

主要问题:

您使用define而不是require函数!代码没有被执行!

第二个问题:

您将document.createElement('div')传递给您的网格!但是它需要一个div-id!

这是一个有效的jsfiddle:

http://jsfiddle.net/f8Zm7/1/

请勿仅使用<script>标记添加javascript代码,请使用

<script type="text/javascript"></script>

别忘了关闭它。

jsfiddle缺少css文件,所以不要指望看起来好看的网格......