2012-08-24 34 views
0

我正在使用Dojo Toolkit开发移动应用程序。 我想作以下的小窗口:在Dojo中创建小部件

<div data-dojo-type="dojox.mobile.ListItem" data-dojoprops="moveTo:'breakdown'"> 
    <div>Maximum: Some value</div> 
</div> 

我希望能够利用这样的小部件:

<div data-dojo-type="dojox.mobile.RoundRectList"> 
    <div data-dojo-type="MyWidget" data-dojo-props="maximum:'1200'"></div> 
</div> 

这里是我做过什么至今:

require(
    [ "dojo/_base/declare", "dojo/parser", "dojo/ready", 
     "dojox/mobile/ListItem", "dijit/_WidgetBase", 
     "dijit/_TemplatedMixin" ], 

     function(declare, parser, ready, ListItem, _WidgetBase, _TemplatedMixin) { 
      declare("MyWidget", [ ListItem, _WidgetBase, _TemplatedMixin ], { 

       templateString: "<div>"   
           + "<div>Maximum: <span data-dojo-attach-point='maximumNode'></span></div>" 
           + "</div>", 

       maximum : "unknown", 
       _setMaximumAttr : { node : "maximumNode", type : "innerHTML" }, 

       buildRendering : function() { 
        this.inherited(arguments); 
       } 
      }); 

      ready(function() { 
       parser.parse(); 
      }); 
     }); 

我没有得到任何错误或类似的东西,页面没有加载。 该代码有什么问题?

+0

你不需要_WidgetBase也不需要_TemplatedMixin来创建ListItem的扩展,ListItem可以继承这两个类 - 尽管它并没有受到伤害。你有没有尝试过创建它,而不使用parser.parse在你准备好的func中? – mschr

+0

我还没有试图以编程方式创建它,因为根据练习不允许这样做。但我也不知道如何以编程方式执行此操作,因为我是Dojo Toolkit的新手。你能不能给我一些工作代码或指导教程的链接? – Javiator

回答

1

我写了这个快速的例子。

从您的代码段我怀疑你可能想要做这样的事情http://jsfiddle.net/hJJUD/7/

我建议不要更改从的listItem模板,而是尝试用它的性能发挥。看看这个文档http://dojotoolkit.org/reference-guide/1.8/dojox/mobile/ListItem.html

如果你发现你需要其他东西让我知道。

+0

感谢您的回复。除了更改模板之外没有别的选择,因为我实际上有一个更复杂的ListItem。我只列出了最大的属性,因为我认为这足以解决问题。我如何在你的例子中使用模板? – Javiator

+0

通过查看代码,它似乎是不可能的,因为ListItem的代码将this.srcNodeRef和this.containerNode和this.domNode设置为同一个实例,而_TemplatedMixin假定它们不同。在这一点上,我建议你尝试“克隆”ListItem中的内容,并创建一个你自己的(不扩展它)。虽然这很长。 – eburgos

+1

事情是,ListItem不使用templateString,它通过'buildRendering'编程建立DOM。 – mschr