Dojo小部件以显示dgrid

纳粹

我一直在努力创建一个简单的模板化小部件,其中包含使用dojo的dgrid。这是我在plunker中的代码

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dijit/themes/claro/claro.css" />
</head>
<body class="claro">
  <div id="myContainer"></div>
  <script type="text/javascript">
    var dojoConfig = {
      async: true,
      parseOnLoad: true,
      packages: [{
        name: 'dgrid',
        location: '//cdn.rawgit.com/SitePen/dgrid/v0.3.16'
      }, {
        name: 'myApp',
        location: window.location.href.replace(/\/$/, "")
      }]
    }
  </script>
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js"></script>
  <script type="text/javascript">
    require(["dojo/dom", "dojo/_base/array", "myApp/SimpleTemplatedGridWidget", "dojo/domReady!"], function(dom, arrayUtil, MyWidget) {
      var widget = new MyWidget.placeAt(myContainer);
    });
  </script>
</body>
</html>

SimpleTemplatedGridWidget.js

define([
     "dijit/registry",
     "dojo/_base/declare",
     "dgrid/OnDemandGrid",
     "dgrid/extensions/DijitRegistry",
     "dijit/_TemplatedMixin",
     "dojo/text!./SimpleTemplate.html"
],
function (registry, declare, Grid, DijitRegistry, _TemplatedMixin, template) {
    return declare([_WidgetBase, _TemplatedMixin], {

        data : [
            { first: 'Bob', last: 'Barker', age: 89 },
            { first: 'Vanna', last: 'White', age: 55 },
            { first: 'Pat', last: 'Sajak', age: 65 }
        ],

        columns : {
            first: 'First Name',
            last: 'Last Name',
            age: 'Age'
        },

        CustomGrid : declare([Grid, DijitRegistry]),

        postCreate: function() {
            myGrid = new CustomGrid({
                columns: columns,
                idProperty: "id"
            }, this.AttachGrid);
            myGrid.renderArray(data);
            myGrid.startup();
        }       
    });
});

SimpleTemplate.html

<div data-dojo-attach-point='AttachGrid'></div>

我看到错误,无法在本地或在解密器中都破译。我可能会缺少什么?

卡斯特罗·罗伊(Castro Roy)

您的代码中有严重错误,有些是javascript基础,有些是dojo。

您的验证码

var widget = new MyWidget.placeAt(myContainer);

应该

var widget = new MyWidget().placeAt(myContainer);

另外,myContainer从广义上讲,我建议您使用dojo/dom已经包含的内容,这会造成混淆

var widget = new MyWidget().placeAt(dom.byId('myContainer'));

现在,关于您的小部件,您的小部件正在扩展_WidgetBase,但未包含在内,因此

define([
     "dijit/registry",
     "dojo/_base/declare",
     "dgrid/OnDemandGrid",
     "dgrid/extensions/DijitRegistry",
     "dijit/_WidgetBase", //You are missing this module
     "dijit/_TemplatedMixin",
     "dojo/text!./SimpleTemplate.html"
],
function (
    registry, 
    declare, 
    Grid, 
    DijitRegistry, 
    _WidgetBase, //Also include it here
    _TemplatedMixin, 
    template
    ) {

扩展时,_TemplatedMixin我们需要定义,templateString该情况应为加载了模板dojo/text!....或静态模板(在您的情况下)

    return declare([_WidgetBase, _TemplatedMixin], {
        templateString: template, //need to add

现在,您的postCreate函数引用了许多未定义的变量,即查看您的代码,我假设您要获取小部件本身的属性,因此

        postCreate: function() {
            myGrid = new this.CustomGrid({
                columns: this.columns,
                idProperty: "id"
            }, this.AttachGrid);
            myGrid.renderArray(this.data);
            myGrid.startup();
        }

请注意,我已经添加this.在前面columnsdataCustomGrid;

already registered widget所做的更改解决了您的大部分问题,仅剩下一个人抱怨我通过删除DijitRegistry模块解决该问题,因为我不知道它的作用和用途。

我建议您一些链接:

创建基于模板的小部件
了解_WidgetBase

希望能帮助到你

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Dojo StackContainer 无法正确显示小部件

来自分类Dev

DOJO 1.8基本小部件以显示json数据

来自分类Dev

DOJO获取小部件的ID

来自分类Dev

DOJO获取小部件的ID

来自分类Dev

Dojo小部件无法正确呈现

来自分类Dev

Dojo:小部件实例共享相同的变量

来自分类Dev

Dojo过滤小部件数据溢出

来自分类Dev

DOJO:覆盖Dijit小部件中的方法

来自分类Dev

Dojo过滤小部件数据溢出

来自分类Dev

Dojo dgrid未显示“未找到结果”消息

来自分类Dev

dgrid 的演示不在 Dojo/Dijit/ContentPane 中显示

来自分类Dev

WordPress小部件未显示

来自分类Dev

小部件不显示通知

来自分类Dev

WordPress-显示小部件

来自分类Dev

如何打开从封装小部件以编程方式从dijit / _HasDropDown继承的dojo小部件?

来自分类Dev

将onClick侦听器连接到Dojo小部件

来自分类Dev

为什么未从dojo小部件元素中触发事件?

来自分类Dev

dojo小部件上未触发定制事件

来自分类Dev

如何设置Dojo小部件的内部输入元素的ID?

来自分类Dev

在模板化小部件外部访问dojo附加点

来自分类Dev

如何从Dojo声明性小部件访问局部变量

来自分类Dev

Dojo没有看到自定义小部件

来自分类Dev

如何使用C3创建Dojo窗口小部件

来自分类Dev

尝试制作将创建表单的dojo小部件

来自分类Dev

事件在模板化的Dojo小部件上不起作用

来自分类Dev

Dojo:使用setTimeout以异步方式加载小部件

来自分类Dev

Dojo:使用选项以声明方式定义类似Select的小部件

来自分类Dev

Dojo2 如何强制 dojo 2 小部件重新渲染?

来自分类Dev

Dojo 2 如何手动销毁 dojo 2 小部件?