不能读取属性'multiSelectLabelText'的定义
Cannot read property 'multiSelectLabelText' of undefined
我使用CheckedMultiSelect的dojo在这种方式,
var MyCheckedMultiSelect = declare(CheckedMultiSelect, {
startup: function() {
this.inherited(arguments);
setTimeout(lang.hitch(this, function() {
this.dropDownButton.set("label", "User Preferences");
}));
}v
var select = new MyCheckedMultiSelect({
dropDown: true,
label: "Preferences",
multiple: true,
name: 'state',
invalidMessage: 'ERROR',
onChange: getValues,
required: true
}, "stateSelect");
form = new Form({
style: 'display:inline'
}, 'formPref');
select.startup();
select._nlsResources.multiSelectLabelText = 'User Preferences';
我想覆盖这个小部件的消息"0项(s)选择",默认情况下是一些其他消息,如"用户偏好"..所以我用这个select._nlsResources。multiSelectLabelText = 'User Preferences';
但是我的页面第一次根本没有加载,它挂起了下面的错误"无法读取未定义的属性'multiSelectLabelText' "..提供一些指针来调试这个问题
我猜CheckedMultiSelect
指的是dojox.form.CheckedMultiSelect
如果是,尝试这样做:
var MyCheckedMultiSelect = declare(CheckedMultiSelect, {
postMixInProperties: function() {
this.inherited(arguments);
this._nlsResources.multiSelectLabelText = 'User Preferences';
}
startup: function() {
this.inherited(arguments);
setTimeout(lang.hitch(this, function() {
this.dropDownButton.set("label", "User Preferences");
}));
}
});
覆盖被移动到您的MyCheckedMultiSelect
小部件内。
这是CheckedMultiSelect
的原始postMixInProperties
方法:
postMixInProperties: function(){
this.inherited(arguments);
this._nlsResources = i18n.getLocalization("dojox.form", "CheckedMultiSelect", this.lang);
if(this.invalidMessage == "$_unset_$"){ this.invalidMessage = this._nlsResources.invalidMessage; }
},
原始postMixInProperties
将首先运行,然后您的自定义小部件的postMixInProperties
将覆盖this._nlsResources.multiSelectLabelText
查看代码片段:
require(['dojo/_base/declare', 'dojox/form/CheckedMultiSelect', 'dojo/domReady!'], function(declare, CheckedMultiSelect) {
var MyCheckedMultiSelect = declare(CheckedMultiSelect, {
postMixInProperties: function() {
this.inherited(arguments);
this._nlsResources.multiSelectLabelText = 'This is multiSelectLabelText';
},
startup: function() {
this.inherited(arguments);
this.dropDownButton.set("label", "This is dropDownButton label");
}
});
var x = new MyCheckedMultiSelect({
dropDown: true,
label: "This is MyCheckedMultiSelect label",
multiple: true,
name: 'state',
invalidMessage: 'ERROR',
onChange: function() {},
required: true,
options: [
{ value: 'option1', label: 'label option 1' },
{ value: 'option2', label: 'label option 2' },
{ value: 'option3', label: 'label option 3' }
]
});
x.placeAt(document.getElementById('test'));
x.startup();
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/resources/dojo.css">
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/tundra/tundra.css">
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojox/form/resources/CheckedMultiSelect.css">
<div id="test" class="tundra">
</div>
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- $window.ga在AngularJS事件中未定义
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 未捕获的TypeError无法读取未定义的属性socialsharing
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 定义完全独立的样式信息
- 如何在选项卡上定义属性'的主窗口对象
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的