Javascript 使用附着点

Javascript 使用附着点,javascript,dojo,Javascript,Dojo,我是dojo的新手。我已经创建了小部件并成功地执行了它。但是现在我想在这里使用附着点的概念。下面是我的代码 practice.html 我使用test.html来执行这个过程 test.html dojoConfig={parseOnLoad:true} showMyForm=函数(){ 要求([“实践/实践”], 职能(实践){ var myObj=新实践(); myObj.myPractice(); }); } showMyForm(); 如果您开始使用其他html节点扩展小部件模板(pr

我是dojo的新手。我已经创建了小部件并成功地执行了它。但是现在我想在这里使用附着点的概念。下面是我的代码

practice.html 我使用test.html来执行这个过程

test.html

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();
})