Javascript 数据dojo附加点值未在相关自定义小部件类中解析
我已经为我的自定义小部件定义了以下模板(这只是一个示例,它还不一定“有效”) 模板“车辆控制” 问题是,当我在WebStorm(JetBrains编辑器)中时,它显示Javascript 数据dojo附加点值未在相关自定义小部件类中解析,javascript,dojo,Javascript,Dojo,我已经为我的自定义小部件定义了以下模板(这只是一个示例,它还不一定“有效”) 模板“车辆控制” 问题是,当我在WebStorm(JetBrains编辑器)中时,它显示this.carSelect无法解决问题。我不知道我在这段代码中缺少了什么,也不知道为什么当我包含要继承的_WidgetBase、_InputWidgetMixin、_TemplatedMixin、_WidgetsInTemplateMixin时,这段代码没有得到解决 这还不够吗?这个问题现在不应该解决了吗 另外,如何在Nabble
this.carSelect
无法解决问题。我不知道我在这段代码中缺少了什么,也不知道为什么当我包含要继承的_WidgetBase、_InputWidgetMixin、_TemplatedMixin、_WidgetsInTemplateMixin时,这段代码没有得到解决
这还不够吗?这个问题现在不应该解决了吗
另外,如何在Nabble中格式化代码?我需要什么代码标签来包围我粘贴到这里的代码?模板中的小部件直到 您可能希望等到生命周期的
后期创建
部分开始使用模板中的小部件:
define([...], function(...){
return declare("srcore.widget.input.VehicleControl", [_WidgetBase, _InputWidgetMixin, _TemplatedMixin, _WidgetsInTemplateMixin, _SecureWidgetMixin],{
_templateString: dojo.cache("srcore", "widget/templates/VehicleControl.html"),
_carDropdown: null
postCreate: function(){
//make sure any parent widget's postCreate functions get called.
this.inherited(arguments);
//can now work with this.domNode and this.carSelect
}
});
我也不清楚为什么要简单地将对this.domNode和this.carSelect的引用复制到其他变量——您应该始终能够从小部件本身获取对这些属性的引用。我认为它在编译时无法解析,但在运行时仍然可以工作。this.carSelect只是使用附加点来引用它来自我的小部件控件的dom节点。正如Buffalo提到的,任何dom访问都应该在postCreate中完成。也像他说的:“this.\u parentWidgetNode=this.domNode;”没有用,因为你可以在小部件的任何地方访问this.domNode。我不知道,伙计,我们并不总是使用PostXCreate和那些工作不正常的工具……我不能谈论其他用法,但是任何使用_TemplatedMixin构建小部件的东西在
buildRendering
阶段()结束之前都不会分配domNode
define(["dojo/_base/declare",
"dojo/_base/array",
"dojo/_base/lang",
"dojo/on",
"dijit/_Widget",
"dijit/_TemplatedMixin",
"dijit/_WidgetBase",
"dijit/_WidgetsInTemplateMixin",
"./_InputWidgetMixin",
"../secure/_SecureWidgetMixin",
"sc/widget/input/Select" // our extension of the base digit seelct
],
function (declare, array, lang, on, _Widget, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, _InputWidgetMixin, _SecureWidgetMixin)
{
return declare("srcore.widget.input.VehicleControl", [_WidgetBase, _InputWidgetMixin, _TemplatedMixin, _WidgetsInTemplateMixin, _SecureWidgetMixin],{
_templateString: dojo.cache("srcore", "widget/templates/VehicleControl.html"),
_carDropdown: null
constructor: function() {
this._parentWidgetNode = this.domNode;
this._carDropdown = this.carSelect;
...
define([...], function(...){
return declare("srcore.widget.input.VehicleControl", [_WidgetBase, _InputWidgetMixin, _TemplatedMixin, _WidgetsInTemplateMixin, _SecureWidgetMixin],{
_templateString: dojo.cache("srcore", "widget/templates/VehicleControl.html"),
_carDropdown: null
postCreate: function(){
//make sure any parent widget's postCreate functions get called.
this.inherited(arguments);
//can now work with this.domNode and this.carSelect
}
});