如何通过JS访问HTML中声明的Dojo DataGrid
how to access via JS a Dojo DataGrid declared in HTML?
我有一个Dojo DataGrid定义在我的HTML:
<table data-dojo-type="dojox.grid.DataGrid" data-dojo-id="mainTable">
<thead>
<tr>
<th field="id" width="128px">id</th>
<th field="foo" width="128px">foo</th>
<th field="bar" width="128px">bar</th>
<th field="baz" width="128px">baz</th>
</tr>
</thead>
</table>
,我有一个JavaScript函数,试图得到这个DataGrid的句柄,并分配一个模型给它:
[...]
mainTable.setStore(new dojo.data.ItemFileWriteStore({ data : data }));
[...]
根据Dojo文档,添加data-dojo-id标签将生成一个JavaScript变量,该变量将被创建以保存网格对象。然后可以在脚本中引用。"但是我的Chromium JS控制台抱怨"'mainTable'是未定义的"。那么这个变量是什么时候创建的在访问它之前我需要做些什么呢?
您在声明标记中设置的id
值是文档对象中domNode的id。javascript,你然后试图运行正在寻找一个全局变量的名称,这是不一样的东西在DOM中的节点名称。
有两种方法可以做到这一点。一种是将jsId="something"
声明为声明性标记的一部分。这将导致dijit创建对小部件实例的引用,作为名称为something
的全局变量。这可以与你的DOM节点id相同,因为它们在不同的命名空间(文档对象vs全局javascript命名空间)。
另一种方法是在javascript中使用查找函数通过DOM节点id查找javascript对象,如下所示:
var mainTable = dijit.byId("mainTable");
mainTable.setStore(...);
data-dojo-id
用于声明存储,而不是小部件。然后,这将创建一个在data-dojo-id
中指定名称的全局变量,您可以从javascript中引用它。
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- DOJO声明中可选className参数的用途是什么
- DOJO 引用错误:未定义声明
- 通过ID获取声明性dojo数据网格
- 重新初始化(或重新声明)Dojo小部件
- Dojo:用Options以声明方式定义类似Select的小部件
- 如何查找使用Dojo声明创建的类的类型
- Dojo 声明出现意外的标识符错误
- 如何在使用声明式 Dojo 时获取对象引用
- Dojo 使用 domConstruct 将声明性代码添加到现有手风琴中
- 混合和匹配声明和编程声明?(Dojo/JS)
- 如何通过JS访问HTML中声明的Dojo DataGrid
- 如何从Dojo声明性小部件访问本地变量
- 在不重复代码的情况下,为不同的Dojo版本以不同的方式声明类
- 是否有可能阻止/删除任何由dojo.require声明的缓存脚本?
- 如何编写我的小部件而不用在dojo.ready中声明它的代码
- dojo/dijit BorderContainer声明性示例-但编程
- 当以编程方式实例化小部件时,Dojo重复ID错误,但不是以声明方式
- 声明式2D列类型dojo图表(自定义轴标签)
- 以Dojo声明的方式插入动态PHP