我想创建一个带有重复元素的模板化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
});
});
的test.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,但它具有相同的行为(即,不显示任何内容)。我错过了什么,或者这是预期的行为?
谢谢!
答案 0 :(得分:1)
不确定为什么它对您不起作用,但我尝试将以下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已被弃用。
希望这有帮助。
最好, - Akira