我一直在阅读/做教程,但一定是缺少了什么。我来自一个有Angular 的背景。你能把html分成像angular这样的组件吗?我遇到的问题是我有大约5个复杂的面板要在Map上显示。它们目前都在一个html文件中,这使得它非常大(每个面板都很复杂)。你会为每一个都做小部件吗?你会在创建小部件时使用html吗?
ohtdti5x1#
你可以为每个组件定义 * widget *,并按照你的意愿组合它们,你也可以将html模板定义为单独的文件,或者只在widget内部定义为模板字符串。Dojo教程有点混乱,所以我将给予您一个示例:
require([ 'dojo/_base/declare', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin'], function(declare, _WidgetBase, _TemplatedMixin) { const Header = declare([ _WidgetBase, _TemplatedMixin], { templateString: '<div>I am Header</div>' }) const App = declare([ _WidgetBase, _TemplatedMixin], { templateString: '<div><div data-dojo-attach-point="headerNode"></div>I am App</div>', constructor: function() { this.header = new Header() }, postCreate: function() { this.header.placeAt(this.headerNode) this.header.startup() } }) let app = new App({}, 'app') })
<script data-dojo-config="async: 1" src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> <div id="app"> </div>
在本例中,我定义了两个小部件:Header和App您可以从另一个widget创建一个示例,并将其放置在任何domNode中。实际上,有很多方法可以创建它。在代码片段中,我在一个require函数中声明了两个小部件,但您可以在单独的文件中这样做:
Header
App
define([ 'dojo/_base/declare', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin', 'dojo/text!templateHtml' ], function (declare, _WidgetBase, _TemplatedMixin, template) { return declare([_WidgetBase, _TemplatedMixin], { templateString: template /// code of widget............. })
在这种情况下,你的模块必须返回一个声明函数和你的小部件类,然后你就可以要求这个小部件作为另一个小部件的依赖项。
1条答案
按热度按时间ohtdti5x1#
你可以为每个组件定义 * widget *,并按照你的意愿组合它们,你也可以将html模板定义为单独的文件,或者只在widget内部定义为模板字符串。
Dojo教程有点混乱,所以我将给予您一个示例:
在本例中,我定义了两个小部件:
Header
和App
您可以从另一个widget创建一个示例,并将其放置在任何domNode中。实际上,有很多方法可以创建它。在代码片段中,我在一个require函数中声明了两个小部件,但您可以在单独的文件中这样做:
在这种情况下,你的模块必须返回一个声明函数和你的小部件类,然后你就可以要求这个小部件作为另一个小部件的依赖项。