gpt4 book ai didi

javascript - 将 Widget 附加到特定节点

转载 作者:行者123 更新时间:2023-12-03 08:37:26 26 4
gpt4 key购买 nike

每次初始化新的小部件时,我都需要将自定义小部件添加到特定的 div。

我相信最标准的方法是使用某些链接

 (new MyFirstWidget()).placeAt('myDiv');

我对这种方法并不热衷,因为它在每次初始化时都需要 placeAt() 的详细信息,在我的例子中,我需要强制将该类型的小部件嵌套在特定的 div 中时间。

相反,我想在小部件类中添加此信息。

目前我正在使用以下代码,在 postCreate() 中使用 placeAt() 效果很好。

我想知道:

  1. postCreate() 位置正确吗?可以补充一下更好点在小部件生命周期内?
  2. 我注意到,在 postCreate() 中调用 this.placeAt() 之前,小部件被标记为 rendered,而实际上有没有被渲染,因为还没有添加到 DOM 中...为什么是吗?
<小时/>
  define([
'dojo/_base/declare',
'dojo/dom-construct',
'dijit/_WidgetBase',
'dijit/_TemplatedMixin',
'dojo/text!./templates/PanelBasic.html'
], function (
declare,
domConstruct,
_WidgetBase,
_TemplatedMixin,
template
) {
'use strict';
var attachTo = 'myPanels';
return declare([_WidgetBase, _TemplatedMixin], {
templateString: template,
ntvType: 'Panel',
constructor: function () {
},
postCreate: function () {
this.inherited(arguments);
this.placeAt(attachTo);
}
});
});

最佳答案

postCreate 似乎是生命周期中的适当点。不过,您可能不想忘记首先在其中调用 this.inherited(arguments)

_rendered 标志是 dijit/_TemplatedMixin 的内部标志,在 buildRendering 运行后设置为 true,负责从以下位置创建 DOM 元素:小部件的模板。从这个意义上说,它已经被“渲染”(从模板字符串到 DOM),尽管它尚未进入文档流。

关于javascript - 将 Widget 附加到特定节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33166507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com