Javascript 使用附着点
我是dojo的新手。我已经创建了小部件并成功地执行了它。但是现在我想在这里使用附着点的概念。下面是我的代码 practice.html 我使用test.html来执行这个过程 test.htmlJavascript 使用附着点,javascript,dojo,Javascript,Dojo,我是dojo的新手。我已经创建了小部件并成功地执行了它。但是现在我想在这里使用附着点的概念。下面是我的代码 practice.html 我使用test.html来执行这个过程 test.html dojoConfig={parseOnLoad:true} showMyForm=函数(){ 要求([“实践/实践”], 职能(实践){ var myObj=新实践(); myObj.myPractice(); }); } showMyForm(); 如果您开始使用其他html节点扩展小部件模板(pr
dojoConfig={parseOnLoad:true}
showMyForm=函数(){
要求([“实践/实践”],
职能(实践){
var myObj=新实践();
myObj.myPractice();
});
}
showMyForm();
如果您开始使用其他html节点扩展小部件模板(practice.html),并且希望从JavaScript小部件代码(practice.js)中引用某个DOM节点,则可以使用附加点,例如:
practice.html
<div>
<input type="text" data-dojo-attach-point="textfield" />
</div>
但是,我不确定您是否熟悉数据dojo附加点的概念,因为老实说,它不会执行您的小部件。如果您开始使用其他html节点扩展小部件模板(practice.html),您希望从JavaScript小部件代码(practice.js)中引用某个DOM节点,然后使用附加点,例如:
practice.html
<div>
<input type="text" data-dojo-attach-point="textfield" />
</div>
但是,我不确定您是否熟悉数据dojo附加点的概念,因为老实说,它不执行小部件。dojo附加点用于直接引用html模板的dom节点
<div id="somenode"><span data-dojo-attach-point="anattachpoint"
data-dojo-attach-event="click: clicked">Click me</span><br>
<input data-dojo-attach-point="field"></div>
这里的dojo附加点是“field”,可以使用“this.field”在js文件中引用
在本例中,我们使用this.field.value访问dom的属性value,dom具有dojo附着点field
您可能会想,我们可以在html模板中使用ID,然后在小部件的js中使用dom.byId()。但是如果创建了两个或多个小部件实例,它们都将具有相同的ID!dom.byId调用不再精确,无法返回所需的节点。
进一步参考:Dojo附加点用于直接引用html模板的dom节点
<div id="somenode"><span data-dojo-attach-point="anattachpoint"
data-dojo-attach-event="click: clicked">Click me</span><br>
<input data-dojo-attach-point="field"></div>
这里的dojo附加点是“field”,可以使用“this.field”在js文件中引用
在本例中,我们使用this.field.value访问dom的属性value,dom具有dojo附着点field
您可能会想,我们可以在html模板中使用ID,然后在小部件的js中使用dom.byId()。但是如果创建了两个或多个小部件实例,它们都将具有相同的ID!dom.byId调用不再精确,无法返回所需的节点。
进一步参考:@AnilBhatiya附加点仅在小部件中使用。您的测试HTML页面不再是小部件的一部分,因此您不再在其中使用附加点。附加点仅在小部件上下文中有意义,因为您不想使用ID(因为如果您使用同一个小部件10次,就不能使用相同的ID)。要在HTML页面上呈现小部件,请在测试HTML页面中的任何属性上使用data dojo type=“Practice/Practice”
。@AnilBhatiya附加点仅在小部件中使用。您的测试HTML页面不再是小部件的一部分,因此您不再在其中使用附加点。附加点仅在小部件上下文中有意义,因为您不想使用ID(因为如果您使用相同的小部件10次,您就不能使用相同的ID)。要在HTML页面上呈现小部件,请在测试HTML页面中的任何属性上使用data dojo type=“Practice/Practice”
。
var d = declare("Practice.practice", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
widgetsInTemplate: true,
templateString: _templateString,
constructor: function(args) {
declare.safeMixin(this, args);
},
someFunction: function() {
console.log(this.textfield.value); // Now you can use this.textfield thanks to the attach point
},
postCreate: function(){
this.inherited(arguments);
var controller = new Controller(this);
//controller.myPractice();
this.myPractice = controller.myPractice;
}
});
<div id="somenode"><span data-dojo-attach-point="anattachpoint"
data-dojo-attach-event="click: clicked">Click me</span><br>
<input data-dojo-attach-point="field"></div>
require([
"dojo/_base/declare", "dojo/dom", "dijit/_WidgetBase", "dijit/_AttachMixin", "dojo/domReady!"
], function(declare, dom, _WidgetBase, _AttachMixin) {
var MyDijit = declare([ _WidgetBase, _AttachMixin ], {
clicked: function(e) { this.field.value = "I was clicked"; }
})
var mydijit = new MyDijit({}, dom.byId('somenode'));
mydijit.startup();
})