3

私はextjs全般、特に4バージョンは初めてです。

クラスを作成しました:

Ext.define('MyPanel', {
    extend:'Ext.panel.Panel',
    views: ["MyPanel"],

    config: {
        width: 200,
        height: 300,
        title: "HELLO"
    },

    constructor:function(config) {
        this.initConfig(config);
        return this;
    },
    alias: 'widget.MyPanel'
});

次に、tabPanelアイテムでXTYPEの形式でこのクラスを呼び出したいと思います:[]:
私はこれが好きでした:

items: [{
    title: 'Kontakt',
    id: 'kontaktTab',
    closable:true,
    closeAction: 'hide',
    layout: 'fit',
    items:[{
            xtype: "MyPanel"
        }]

まだ運がない、私が得るのは: Cannot create an instance of unrecognized alias: widget.MyPanel"
あなたは考えなければならない、なんて初心者だ……;-)

誰か助けてください!!!

4

4 に答える 4

7

ビュー(MyPanel)を定義するときに、なぜviewsプロパティを設定したのですか?

Ext.define('MyPanel', {
    extend:'Ext.panel.Panel',
    alias: 'widget.MyPanel'
    views: ["MyPanel"],    <------ Why do you need this???
    config: {
        width: 200,
        height: 300,
        title: "HELLO"
    },
    constructor:function(config) {
        this.initConfig(config);
        return this;
    }
});

また、新しいビューを使用する場合は、で指定する必要がありますrequires。次に例を示します。

Ext.define('MyApp.view.Viewport',{
    extend: 'Ext.container.Viewport', 
    layout: 'border',
    requires: [
        'MyPanel'       <--- This will ensure that this view file needs to be loaded
    ],  
    .
    .
    .
    items: [{
        title: 'Kontakt',
        id: 'kontaktTab',
        closable:true,
        closeAction: 'hide',
        layout: 'fit',
        items:[{
            xtype: "MyPanel"
        }]
于 2011-05-17T17:41:22.797 に答える
4

うーん、エイリアスを小文字にしてみましたか。エイリアスは常に小文字で保存およびフェッチされると思いましたが、よくわかりません

于 2011-05-17T16:17:57.533 に答える
4

ああ、へへ、私は完全に何かを見落としました:

'alias'を使用すると、ExtJSクラスリストに新しいクラス参照を作成します。したがって、上記のようにエイリアスを追加することで、次のように呼び出すことでエイリアスをインスタンス化できます。

var newMyPanel = Ext.create('widget.MyPanel');

ただし、xtype指定子を使用してインスタンスを追加する場合は、ウィジェット部分を省略して、次のようにする必要があります。

var myContainer = Ext.create('Ext.panel.Panel',{
    items: [{
        xtype: 'MyPanel'
    }]
});

上記のコードを使用すると、Extはエイリアス'widget.MyPanel'を持つクラスを検索します。

これとは別に、コンストラクターは少しファンキーに見えると思います。コンストラクターはそれ自体を返さないようにする必要があります(たとえば、Perlコンストラクターで行うように)

これで十分です:

constructor: function() {
     this.callParent(arguments);
     // Your own code here
}

乾杯して、それがロブに役立つかどうか教えてください

于 2011-05-27T09:32:08.790 に答える
3

あなたがしなければならないのはそのようにそれを宣言することです:

 var panel1 =  Ext.create('Ext.app.myPanel',{title : 'panel 1',height:350});//title and hight are optionals if u have already defined them

次に、次のように使用します。

...
items : [panel1 ]
...

そしてあなたはそれを要求する必要があるかもしれません:

 Ext.require([
, 'Ext.app.myPanel'
]);

mypanel.jsをアプリフォルダーに配置します

お役に立てれば

于 2011-06-09T09:22:05.463 に答える