相关疑难解决方法(0)

在ExtJS中调用超类方法的更好方法

我读过的所有ExtJS文档和示例都建议调用这样的超类方法:

MyApp.MyPanel = Ext.extend(Ext.Panel, {
  initComponent: function() {
    // do something MyPanel specific here...
    MyApp.MyPanel.superclass.initComponent.call(this);
  }
});
Run Code Online (Sandbox Code Playgroud)

我已经使用这种模式很长一段时间了,主要的问题是,当你重命名你的类时,你还必须改变所有对超类方法的调用.这很不方便,经常我会忘记,然后我必须追查奇怪的错误.

但是看完来源Ext.extend(),我发现,这不是我可以使用superclass()super()该方法Ext.extend()增加了原形:

MyApp.MyPanel = Ext.extend(Ext.Panel, {
  initComponent: function() {
    // do something MyPanel specific here...
    this.superclass().initComponent.call(this);
  }
});
Run Code Online (Sandbox Code Playgroud)

在这个代码中,将MyPanel重命名为其他东西很简单 - 我只需更改一行.

但我怀疑......

  • 我没有在任何地方看到过这种情况,旧的智慧说,我不应该依赖于无证件的行为.

  • 我没有在ExtJS源代码中找到这些superclass()supr()方法的单独使用.为什么在你不打算使用它们时创建它们?

  • 也许这些方法在某些旧版本的ExtJS中使用但现在已被弃用?但它似乎是一个非常有用的功能,你为什么要弃用呢?

那么,我应该使用这些方法吗?

javascript extjs extend superclass extjs3

29
推荐指数
3
解决办法
4万
查看次数

Extjs:通过构造函数或initComponent扩展类?

在extjs中,你总是可以通过扩展extjs类constructor().对于从Component你那里学习的课程也可以延伸initComponent().

我想知道为什么这么多代码扩展通过initComponent,而constructor似乎是通用扩展方法.是否initComponent提供明显的优势了constructor

javascript inheritance extjs prototypal-inheritance

22
推荐指数
2
解决办法
2万
查看次数

ExtJS 3:创建自定义类的两种方法:有什么区别?

我正在尝试学习ExtJS和面向对象的JavaScript.我已经看到人们通过几种方式在自定义命名空间中定义类.这两种方法有什么区别?

方法1

Ext.ns('myapp.cars');
(function(){
    var Car = Ext.extend(Object, {
       //...
    })

    myapp.cars.Car = Car;
})()
Run Code Online (Sandbox Code Playgroud)

方法2

Ext.ns('myapp.cars');
myapp.cars.Car = Ext.extend(Object, {
       //...
});
Run Code Online (Sandbox Code Playgroud)

方法2更易于阅读,所需代码更少; 有什么理由方法1更好吗?谢谢!

javascript extjs extjs3

12
推荐指数
2
解决办法
9077
查看次数

使用ExtJS扩展类时的私有成员

我做的一些研究ExtJS的论坛,关于私有方法和字段一个内部扩展类的,我无法找到任何真正的答案.

当我说一个扩展课程时,我的意思是这样的:

Ext.ux.MyExtendedClass = Ext.extend(Ext.util.Observable, {
    publicVar1: 'Variable visible from outside this class',
    constructor: function(config) { this.addEvents("fired"); this.listeners = config.listeners; }, // to show that I need to use the base class
    publicMethod1: function() { return 'Method which can be called form everywhere'; },
    publicMethod2: function() { return this.publicMethod1() + ' and ' + this.publicVar1; } // to show how to access the members from inside another member
});
Run Code Online (Sandbox Code Playgroud)

这里的问题是一切都是公开的.那么,如何在MyExtendedClass范围内添加一个新的变量o方法,该方法无法从外部访问但可以通过公共方法访问?

javascript extjs private extend private-members

11
推荐指数
2
解决办法
1万
查看次数

私有函数和变量ExtJs4?

在我目前的项目中,我使用的是ExtJs3.3.
我创建了许多具有私有变量和函数的类.例如:

MyPanel = function(config){
  config = config || {};

  var bar = 'bar';//private variable

  function getBar(){//public function
     return bar;
  }

  function foo(){
     //private function
  }

Ext.apply(config, {
  title: 'Panel',
  layout: 'border',
  id: 'myPanel',
  closable: 'true',
  items: []
});

  MyPanel.superclass.constructor.call(this, config);
};
Ext.extend(MyPanel , Ext.Panel, {
  bar: getBar
});
Ext.reg('MyPanel', MyPanel);
Run Code Online (Sandbox Code Playgroud)

我知道在ExtJs4中做事的新方法是使用该Ext.define方法.因此,我上面的代码看起来像这样:

Ext.define('MyPanel', {
  extend: 'Ext.panel.Panel',

  title: 'Panel',
  layout: 'border',
  closable: true,

  constructor: function(config) {

     this.callParent(arguments);
  },

});
Run Code Online (Sandbox Code Playgroud)

所以我想知道的是如何在ExtJs4中定义私有变量和函数,类似于我在ExtJs3中的方式?
换句话说,我理解该Ext.define方法将负责定义,扩展和注册我的新类,但是我应该在哪里声明javascript var,它们不是类本身的属性,而是类所需要的.

MyPanel = function(config){
  //In …
Run Code Online (Sandbox Code Playgroud)

javascript extjs private-members extjs4

11
推荐指数
3
解决办法
1万
查看次数

ExtJS有标准的设计模式吗?

我们在旗舰应用程序中使用ExtJS 3.x.我们的应用程序管理区域分为我们提供的不同模块.每个模块以及随后模块的不同CRUD操作的每个页面都有自己的.js文件来处理功能.

当我们开始时,我们只是将所有代码抛入Ext.onReady()并且并不真正担心全局命名空间(嘿......我们从未真正将自己视为javascript开发人员).在获得ExtJS之后,我开始使用单例模式并从中调用init方法Ext.onReady().

var newModule = {
    propertyOne: 'asfd',
    propertyTwo: 'asdf',
    init: function() {
        // set up
    }
};

Ext.onReady(function() {
    newModule.init();
});
Run Code Online (Sandbox Code Playgroud)

这是javascript单例模式的正确使用吗?是否有任何模式适合ExtJS比单例更好,比如说模块模式?

我一直在使用本指南作为学习Javascript设计模式的起点.

singleton design-patterns module extjs extjs3

5
推荐指数
1
解决办法
2216
查看次数