在使用dojo mobile时遇到dojo模板问题。我想为EdgeToEdgeStoreList创建自定义ListItem。
主要html文件index.html包含
<div data-dojo-type="dojox.mobile.EdgeToEdgeStoreList" data-dojo-props="itemRenderer:app.widgets.CustomListItem" id="list"></div>
.js文件,用于在列表中设置商店:
require([ "dojo/ready","dojo/store/Memory", "dojo/parser", "sts/widgets/CustomListItem", "dojox/mobile", "dojo/dom",
"dijit/registry", "dojox/mobile/ScrollableView", "dojox/mobile/TabBar",
"dojox/mobile/TabBarButton", "dojox/mobile/EdgeToEdgeStoreList"], function(ready, Memory, parser) {
ready(function() {
console.log('Dojo ready!');
store = new Memory({
data : [{name:'aaa',surname:'AAA'},{name:'bbb', surname: 'BBB'}],
idProperty : 'name'
});
dijit.registry.byId('list').setStore(store);
});
});
Widget .js文件
define(["dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dojox/mobile/ListItem",
"dojo/text!./templates/CustomListItem.html"
],
function(declare, WidgetBase, TemplatedMixin, ListItem, template){
return declare('app.widgets.CustomListItem', [WidgetBase, TemplatedMixin, ListItem],{
templateString: template
});
});
小部件的模板:CustomListItem.html
<div>
<div>TEST TEST</div>
</div>
有人知道为什么我在小部件声明(WidgetBase,TemplatedMixin,ListItem)中使用这样的顺序,dojo尝试渲染ListItem默认模板但是如果我交换TemplatedMixi和ListItem(WidgetBase,ListItem,TemplatedMixin),一切正常是否正确?我甚至不知道继承顺序对道场很重要。
谢谢。
答案 0 :(得分:0)
我没有对你的问题有确切的根解释,但事实是ListItem已经从_WidgetBase继承了自己,所以我想说没有理由让你自己的类复制那个继承。
declare('app.widgets.CustomListItem', [ListItem, TemplatedMixin],{});
应该工作并且更简单吗?