2014-10-30 73 views
2

我想定义自定义小部件,在里面创建一个Dijit/form/Button并为其添加附加点。但由于某种原因,附加点仍然隐形。以编程方式定义附加点

postCreate: function() { 
    require(["dijit/form/Button", "dojo/dom", "dojo/domReady!"], function(Button, dom){ 
    // Create a button programmatically: 
    var myButton = new Button({ 
     label: "Click me!", 
     "data-dojo-attach-point": "myButton" 
    }, "progButtonNode").startup(); 
    }); 

    console.debug(this.myButton); // returns undefined 
} 

回答

2

从技术上说,您可以做到这一点。但是dojo在解析时索引了所有的附加点。所以如果你要动态添加一个按钮,那么你也必须解析dom。

+0

这看起来很合理。你能解释一下吗? parser.parse()是否必须在某个时候被调用? – Oleg 2014-10-31 10:06:48

+2

这是一个棘手的使用'parser.parse()'将是可能的,如果页面从未被传递,否则你会得到一个“已经注册”的错误,或者你只能通过添加'rootNode'解析你添加的节点,属性给解析器。我是如何做一个按钮的小部件。小部件的模板将定义一个带有附加点的按钮。这样,只要你需要一个按钮,你就可以动态创建一个并附加它。你可以从'widgetinstance.attachpoint'访问它。希望这可以帮助 – shakirthow 2014-10-31 18:05:26

+0

太棒了!感谢您的解释。 – Oleg 2014-11-02 14:30:33

相关问题