我想创建一个带有重复元素的模板化 Dojo 小部件。通过阅读 dojotoolkit.org 上的文档,这似乎应该可行:
widget.js:
define([
'dojo/_base/declare',
'dijit/_WidgetBase',
'dijit/_TemplatedMixin',
'dijit/_WidgetsInTemplateMixin',
'dojo/text!./test.html',
'dojox/mvc/getStateful',
'dojox/mvc/Repeat',
'dojox/mvc/Output',
'dojox/mvc/at',
], function(declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin,
template, getStateful) {
var data = getStateful([
{
'id': 1
},
{
'id': 2
}
]);
return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
templateString: template,
data: data
});
});
测试.html:
<section>
<script type="dojo/require">at: "dojox/mvc/at"</script>
<div data-dojo-type='dojox.mvc.Output' data-dojo-props="value: at(this.data[0], 'id')"></div>
<div data-dojo-type="dojox.mvc.Repeat" data-dojo-props="children: this.data">
<div>REPEAT</div>
</div>
</section>
但是,“输出”小部件似乎可以正确检索第一个 ID,但“重复”不显示任何内容。
为什么重复在这里不起作用?我看到一些帖子说 WidgetList 可能会取代 Repeat,但它具有相同的行为(即不显示任何内容)。我错过了什么,还是这是预期的行为?
谢谢!
最佳答案
不知道为什么它对你不起作用,但我尝试将以下 HTML 放入与你的 widget.js 和 test.html 相同的目录中,并且它起作用了:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js" data-dojo-config="parseOnLoad: 0, async: 1"></script>
<script type="text/javascript">
require({
paths: {
"widgetlistintemplate": location.pathname
}
}, ["dojo/parser"], function (parser) {
parser.parse();
});
</script>
</head>
<body>
<div data-dojo-type="widgetlistintemplate/widget"></div>
</body>
</html>
顺便说一句,你说得对,dojox/mvc/WidgetList 是 dojox/mvc/Repeat 的后继者。 dojox/mvc/Repeat 已被弃用。
希望这有帮助。
最好,-阿基拉
关于javascript - 为什么这个 dojo.mvc.Repeat 不能在模板化小部件中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310643/