面对ExtJS的工作问题 有这样的代码 - 一个新类(视图)
Ext.define('FormApp.view.ElementContainer', {
extend: 'Ext.Container',
alias: 'widget.elemcontainer',
initComponent: function() {
this.items = [{
layout: {
type: 'hbox',
align: 'middle'
},
items: [
{ xtype: 'component',
html: ' Поиск  '},
{ xtype: 'textfield',
width: 495,
name: 'search'
},
{ xtype:'component',
html:'  '},
{ xtype: 'button',
text: 'Найти',
width: 80,
action: 'searchTreeData'}
]}
];
this.callParent();
}
});
然后在控制器中我编写这样的代码来获取文本字段的值
Ext.define('FormApp.controller.ControlOne', {
extend: 'Ext.app.Controller',
views: ['ElementContainer', 'TreeView'],
init: function() {
this.control({
'elemcontainer button[action=searchTreeData]': {
click: this.searchTree
},
'elemcontainer textfield[name=search]':{change: this.str}
});
},
searchTree: function(searchStr) {
var dat = Ext.widget('elemcontainer');
var str = dat.down('textfield').getValue();
alert (str.getValue());
},
str: function()
{alert('OK');}
});
我无法获取extJS
中文本字段的值如何访问元素以获取其值?
提前致谢并抱歉我的笨拙英语
答案 0 :(得分:1)
问题在于,通过在searchTree()中使用Ext.widget(...),您将创建该类的新实例(确保check the docs),而不是获取组件的实例已经存在。
另一个问题是str已经是文本字段的“值”,因此在str.getValue()上调用getValue()也不会让你走得太远。
所以提出一些建议:
更新searchTree方法以传递正确的参数。由于此方法是在按钮的click事件上调用的,因此参数将是Ext.button.Button的单击事件的参数:searchTree(btn,e,opts){...}
一旦将正确的参数传递给searchTree(),就可以使用组件选择器方法获取容器的现有实例。例如,由于按钮已经是容器的后代,因此您可以执行以下操作以获取组件的正确实例:
var ctr = btn.up(“elemcontainer”)
现在您拥有了正确的容器实例,您可以再次使用其中一个组件选择器方法来查找文本字段:
var str = ctr.down('textfield')。getValue()