为什么视图的别名定义为"widget.myxtype"?



我想知道:为什么我们定义的新部件的别名总是定义为"widget " ?Myxtype"——其中"widget"的意义是什么?

Alias属性是ExtJs4中新引入的,用于替代以前版本中的"xtype"。alias中指定的"widget"确实有两个我能想到的意义:

  1. 使用简写
  2. 代码的可读性和理解

您可以使用简写来创建小部件。例如,如果您有一个名为widget的小部件。Myview,您可以创建它的实例,如下所示:

var view = Ext.widget('myview'); 

如果你没有在别名中前缀"widget",你只能通过:

实例化
var view = Ext.create('xyz.myview');

此外,create方法可用于创建已使用Ext.define()定义的任何类的实例。

当你前缀"widget"时,你确信他们会处理UI。这有助于更好地理解和阅读代码(当您看到Ext.widget('abc')时,您知道它是一个窗口、按钮或某个UI组件)。

更新:alias属性由非UI组件的其他类使用。但是,您将只看到UI组件的"widget",因此将其表示为视图或UI(这就是为什么它们单独使用widget的简写)。其他ExtJS类也有别名。例如,所有的代理类都有"代理"前缀。但是现在,"proxy"前缀的唯一意义是可读性。

我认为这是一种命名空间:您还可以为代理、读取器和写入器定义别名,它们分别需要以'proxy '作为前缀。"、"读者。和"作家"。":

Ext.define('App.proxy.MyProxy', {
  extend: 'Ext.data.proxy.Rest',
  alias: ['proxy.my_proxy'],
Ext.define('App.reader.MyReader', {
  extend: 'Ext.data.reader.Json',
  alias: ['reader.my_reader'],
Ext.define('App.reader.MyWriter', {
  extend: 'Ext.data.writer.Json',
  alias: ['writer.my_writer'],

然后你可以引用它们:

    proxy: {
      type: 'my_proxy',
      url: '/data/library_store.json',
      reader: {
        type: 'my_reader',
        ...
      },
      writer: 'my_writer'

最新更新