Я видел тот же вопрос в листе рассылки dojo-interest. dojox/mvc/Repeat является устаревшим модулем. dojox/mvc/WidgetList заменяет его.
В приведенном ниже коде показано, как dojox/mobile/Accordion можно использовать с dojox/mvc/WidgetList:
<!DOCTYPE html>
<html>
<head>
<title>Accordion</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojox/mobile/deviceTheme.js"
data-dojo-config="mblThemeFiles: ['base', 'Accordion']"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js"
data-dojo-config="async: 1, parseOnLoad: 0"></script>
<script type="text/javascript">
require([
"dojo/_base/declare",
"dojox/mvc/at",
"dojox/mobile/parser",
"dojox/mobile/Accordion",
"dojox/mvc/WidgetList",
"dojox/mvc/Output",
"dojox/mvc/_InlineTemplateMixin",
"dojox/mobile",
"dojox/mobile/ContentPane"
], function(declare, at, parser, Accordion){
declare("my.Accordion", Accordion, {
addChild: function(widget, index){
this.inherited(arguments, [widget, index * 2]);
}
})
window.at = at;
window.model = [
{title: "foo", content: "Foo", selected: true},
{title: "bar", content: "Bar"},
{title: "baz", content: "Baz"}
];
parser.parse();
});
</script>
</head>
<body>
<div data-dojo-type="my.Accordion"
data-dojo-mixins="dojox/mvc/WidgetList,dojox/mvc/_InlineTemplateMixin"
data-dojo-props="children: model"
data-mvc-child-type="dojox/mobile/ContentPane"
data-mvc-child-mixins="dojox/mvc/Templated"
data-mvc-child-props="label: at(this.target, 'title'), selected: at(this.target, 'selected')">
<script type="dojox/mvc/InlineTemplate">
<div>
<span data-dojo-type="dojox/mvc/Output"
data-dojo-props="value: at('rel:', 'content')"></span>
</div>
</script>
</div>
</body>
</html>
Вот некоторые хитрости:
- Способ, которым dojox/mobile/Accordion вставляет заголовок, не хорошо работать с тем, как dojox/mvc/WidgetList вызывает dojox/mobile /Accordion.addChild(). Вам нужно будет удвоить индекс, чтобы обойти это.
- Данный шаблон Dojo не позволяет использовать data-dojo-type. , data-dojo-mixins или data-dojo-props в корневом узле шаблона, вы нужно будет указать их в data-mvc-child-type, data-mvc-child-mixins и data-mvc-child-props, где объявлен dojox/mvc/WidgetList.
Дополнительную информацию см. в ответе моего списка рассылки.
Бест, Акира
person
asudoh
schedule
11.11.2013