ExtJs函数
今天在学习的时候遇到了一个让我很郁闷的问题,当然啦也是因为俺是菜鸟的原因啦,先把正确的代码贴上:
(function(){
Ext.regModel('State', {
fields: [
'name','abbr','slogan'
]
});
var states = [
{"abbr":"AL","name":"Alabama","slogan":"The Heart of Dixie"},
{"abbr":"AK","name":"Alaska","slogan":"The Land of the Midnight Sun"},
{"abbr":"AZ","name":"Arizona","slogan":"The Grand Canyon State"},
{"abbr":"AR","name":"Arkansas","slogan":"The Natural State"},
{"abbr":"CA","name":"California","slogan":"The Golden State"},
{"abbr":"CO","name":"Colorado","slogan":"The Mountain State"},
{"abbr":"WY","name":"Wyoming","slogan":"Like No Place on Earth"}
];
var store11 = function createStore() {
return Ext.create('Ext.data.Store', {
autoDestroy: true,
model: 'State',
data: states
});
}();
Ext.onReady(function(){
var formPanel = Ext.create('Ext.form.Panel', {
renderTo: 'form-ct',
frame: true,
title:'XML Form',
width: 340,
bodyPadding: 5,
waitMsgTarget: true,
fieldDefaults: {
labelAlign: 'right',
labelWidth: 85,
msgTarget: 'side'
},
items: [{
xtype: 'fieldset',
title: 'Contact Information',
defaultType: 'textfield',
defaults: {
width: 280
},
items: [ {
xtype: 'combobox',
fieldLabel: 'State',
name: 'state',
store: store11,
valueField: 'abbr',
displayField: 'name',
typeAhead: true,
queryMode: 'local',
emptyText: 'Select a state...'
}, {
xtype: 'datefield',
fieldLabel: 'Date of Birth',
name: 'dob',
// allowBlank: true,
maxValue: new Date(),format:'Y-m-d'
}
]
}],
});
});
})();
显示的效果如下:

排版有点乱哈,以上是正确的代码的结果。
接下来就说我遇到的问题吧:
var store11 = function createStore() {
return Ext.create('Ext.data.Store', {
autoDestroy: true,
model: 'State',
data: states
});
};
这个代码熟悉吧?再仔细看看,和上面的代码有什么区别?看了好久终于知道了,这个比着上面的少了一个“()”,可别小看这个括号啊,就是因为这个store11才会被看作不同的角色,如果添加括号就代表store11是个对象了,理解否?不理解? 好吧,我就把自己的心得记录一下吧,还记得上次写的闭包的日志吧,函数后面加上括号代表这个函数立即执行,这些知道了吧,正确的代码是上面有括号的,如果把括号去点,就代表store11是个函数了,这个时候如果在item中的store元素的值设置为store11的话是不是就会出现类型转换异常啊?^。^,Java用习惯了,这下子明白了吧,好了不多写了,问题明白就行了,还有事情,先记录这么多吧…………

浙公网安备 33010602011771号