Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs中引用的意义是什么?_Extjs_Extjs4 - Fatal编程技术网

Extjs中引用的意义是什么?

Extjs中引用的意义是什么?,extjs,extjs4,Extjs,Extjs4,我仍在试图理解Extjs的意义。关于这个问题的文件似乎非常缺乏 裁判应该让生活更轻松,但我发现事实恰恰相反,我想知道这是否是因为我没有充分利用他们的潜力 如果我在控制器中对组合使用ref,我可能会有如下代码: refs: [{ ref: 'maritalStatusCombo', selector: 'combo[name="maritalstatus"]', }] myFunction: function () { var comp = this.getMarital

我仍在试图理解Extjs的意义。关于这个问题的文件似乎非常缺乏

裁判应该让生活更轻松,但我发现事实恰恰相反,我想知道这是否是因为我没有充分利用他们的潜力

如果我在控制器中对组合使用ref,我可能会有如下代码:

refs: [{
    ref: 'maritalStatusCombo',
    selector: 'combo[name="maritalstatus"]',
}]

myFunction: function () {
    var comp = this.getMaritalStatusCombo();
}
var maritalStatusComboSelector = 'combo[name="maritalstatus"]'

myFunction: function () {
    var comp = Ext.ComponentQuery.query(maritalStatusComboSelector)
}
但是,我可以像这样轻松地编写代码:

refs: [{
    ref: 'maritalStatusCombo',
    selector: 'combo[name="maritalstatus"]',
}]

myFunction: function () {
    var comp = this.getMaritalStatusCombo();
}
var maritalStatusComboSelector = 'combo[name="maritalstatus"]'

myFunction: function () {
    var comp = Ext.ComponentQuery.query(maritalStatusComboSelector)
}
第二个版本使用较少的文本(…我认为),并且更清楚地理解IMO

而且我的IDE对第二个更为理解

如果我在选择器字符串上选择“导航到…”,它会直接将我带到顶部的声明。在第一个示例中,getMaritalStatusCombo()函数上的“导航到..”不会带我去任何地方


refs应该如何让生活更轻松?

refs配置在控制器上创建一个getter方法,该方法在内部使用Ext.ComponentQuery使用配置的选择器获取组件实例。下面的示例将向控制器添加getList方法,并返回应用程序层次结构中的第一个组件,其xtype为“grid”。默认情况下,当查询未找到目标组件时,将返回undefined

Ext.define('MyApp.controller.Foo', {
    extend: 'Ext.app.Controller',

    refs: [{
        ref: 'list',
        selector: 'grid'
    }]
});
因此,只需在第一个元素上使用“selector”xtype创建一个getter方法即可。我经常在表单中使用它,例如,在我的登录控制器上,我可以简单地使用getForm获取表单

显然,您可以像您告诉我们的那样创建自己的方法,但是使用refs是完全相同的,您可以使用refs prop数组创建许多方法,而无需为所需的每个组件创建大量getter


简单地说,这是一种将所有getter放在一个位置的简单方法。

refs config在控制器上创建一个getter方法,该方法在内部使用Ext.ComponentQuery使用配置的选择器获取组件实例。下面的示例将向控制器添加getList方法,并返回应用程序层次结构中的第一个组件,其xtype为“grid”。默认情况下,当查询未找到目标组件时,将返回undefined

Ext.define('MyApp.controller.Foo', {
    extend: 'Ext.app.Controller',

    refs: [{
        ref: 'list',
        selector: 'grid'
    }]
});
因此,只需在第一个元素上使用“selector”xtype创建一个getter方法即可。我经常在表单中使用它,例如,在我的登录控制器上,我可以简单地使用getForm获取表单

显然,您可以像您告诉我们的那样创建自己的方法,但是使用refs是完全相同的,您可以使用refs prop数组创建许多方法,而无需为所需的每个组件创建大量getter


简单地说,这是一种将所有getter放在一个位置的简单方法。

它们在Ext4中有一些优点,可以避免重复/多次指定选择器-但值得注意的是,Ext5及更高版本的
ViewControllers
上不存在
refs
,它们使用不同类型的引用(而常规控制器最终往往不用于“查看”相关内容)。重点是,就升级框架而言,采用
refs
没有真正的优势-因此,如果它们对您不起作用,忽略它们也无妨。它们在Ext4中有一些优点,可以避免重复/多次指定选择器-但值得注意的是
refs
并不存在在Ext5及更高版本中的
ViewControllers
上,它们使用不同类型的引用(而常规控制器往往不用于与“视图”相关的内容).重点是,就升级框架而言,采用
refs
并没有真正的优势-因此,如果它们对您不起作用,忽略它们也没有坏处。