从全局控制器,我可以很容易地获得对另一个全局控制器的引用
this.getController('TargetController');
但是,在视图控制器的上下文中,如何获取对同一控制器的引用?即:
Ext.define('myCoolApp.view.SomeNeatController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.someneat',
    // this is bound to a button click event, let's say.
    onClick: function(button) {
        // How to get a reference to a global controller here? 
        // this.getController('TargetController'); is not defined
        // on the view controller....
    }
});
可能是一些我很想念的简单,但任何帮助都会受到赞赏.
我正在尝试创建一个扩展textfield用于ExtJS表单的PercentField组件.我正在寻找的行为是字段显示百分比值,例如25%或400%,但是当用户正在编辑字段或提交的表单是小数时,具有基础值,例如.25或4.
我通过在网格列中使用渲染器成功地完成了这项工作,(这里是一个小提琴),但它看起来不像是textfield有一个渲染器属性,用于在基本形式中使用该字段.我看过这些rawToValue和valueToRaw方法,但它们似乎并不是我想要的.有什么建议?
有没有一种方法来查询xtype'yourxtype'的子组件?例如,您有一个面板,此面板内部是一个位于工具栏上的自定义xtype.
findParentByType非常适合查找,但是没有像findChildByType这样的方法.而down方法仅适用于元素.Ext.ComponentQuery是一个单例,但不适用于xtypes?是否有另一种方法可以从组件中查询?
我正在尝试将REST API连接到我的ExtJS应用程序.
对于GET /user类似的请求,我返回如下响应:
{items: [{id: 1, ...}, {id: 2, ....}], total: 2}
所以我为此创建了一个模型:
Ext.define('model.User', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id', type: 'int' },
        { name: 'name' },
    ],
    proxy: {
        reader: {
            type:          'json',
            totalProperty: 'total',
            rootProperty:  'items'
        },
        type:   'rest',
        url:    '/Api/User',
    }
});
网格加载数据,看起来都很完美.现在我希望能够请求我的api所用的单个记录{id: 1, ...}.但是当我这样做时model.User.load(1),永远不会触发成功处理程序,因为响应不包含items属性.如果我将我的记录放在该属性中,它将起作用,但对其他API用户来说也会显得难看.
如何在没有root属性的情况下使其工作?我无法在模型上找到代理/阅读器的任何事件来动态更改它.
我通过将以下代码添加到配置参数来启用在网格上拖放行:
viewConfig: {
        plugins: {
            ptype: 'gridviewdragdrop',
            dragGroup: 'firstGridDDGroup',
            dropGroup: 'firstGridDDGroup'
        }
    }
它是有效的,无论如何我想拖动发生只是用户通过拖动属于第一列的元素来实现它.
我的想法是添加一个"移动"列,如下所示:
move| name | surname | age |
<-> | alex | cross   | 24  |
<-> | jim  | reynor  | 35  |
如果我想要在第一行中移动第二行(jim),我必须将鼠标放在"< - >"符号上,然后拖动,相反如果我将鼠标放在"surname"列上,请执行和丢弃应该被禁用.
这可能吗?
您好我有以下视图,他们与Extjs 4.1库工作得很好,但知道我使用5.1版本,当我尝试使用它时,它不会在doLayout()上显示pproperly并显示Uncaught TypeError:无法读取属性'tooNarrow'的undefined .我是Extjs的新手也许在5.1库中有不同的选项,我不知道?请帮助
拳头我试图加载PersonPanelView:
PersonPanelView:
Ext.define('Pandora.view.Person.PersonPanelView', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.PersonPanel',
    layout: 'hbox',
    items:[
        {
            flex:1.8,
            xtype:'PersonList',
            height:'100%',
            title:'List of persons'
        },
        {
            flex:3,
            height:'100%',
            xtype:'panel',
            id:'personProfileId',
            autoScroll:true,
            title:'Person profile',
            //frame:true,
            bodyStyle:{background: '#99bce8'}
        }
    ]
});
PersonList:
Ext.define('Pandora.view.Person.PersonListView', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.PersonList',
    layout: 'border',
    title: 'Person',
    store: 'Person.PersonStore',
    autoScroll:true,
    dockedItems:[
        {
            tbar:[
                { xtype:'button', text:'Add Person',name:'addPerson'        },'-',
                { xtype:'button', text:'Edit Person',name:'editPerson'      },'-',
                { xtype:'button', text:'Remove Person',name:'removePerson'  },'-',
                { xtype:'button', text:'Add Conference',name:'addConference'},'-',
                { xtype:'button', text:'Add Event',name:'addEvent'}
            ]
        }
    ], …我们可以使用什么来代替addEvents向扩展类添加事件?
this.addEvents({
    "itemclick" : true
});
我正在尝试使用新的ExtJs 5.我根据ExtJs5定义的MVC模式创建了一个小应用程序.
我正在使用ViewControllers每一个View.
问题陈述:现在假设我有两个VC(Controller1和Controller2).每个人都有自己的方法.我希望从Controller1调用Controller2的方法.我想从Controller1更新与Controller2关联的视图.
E.g. Suppose there is a separate view for Status Bar and a ViewController(StatusBarController). 
This VC has a method to update the view based on whatever message it receives as input parameter. 
All the other controllers in the application will call this VCs method to update the status of the application on the status bar.
在以前的版本中,this.getController('StatusBarController')用于获取任何控制器的句柄,然后调用其方法.
但是当我使用ViewController时,这在我的情况下不起作用.
任何人都可以指导我如何实现这个目标吗?而且这是否是正确/理想的方式来做这样的事情还是有更好的选择?
这是我的代码:
StatusBarView:
Ext.define('MyApp.view.statusbar.StatusBarView', {
extend : 'Ext.panel.Panel',
controller: 'StatusBarController',
region : 'south',
xtype …我有一个简单的模型-
Ext.define('MyModel', {
    extend: 'Ext.data.Model',
    requires: [
        'Ext.data.field.String'
    ],
    fields: [
        {
            type: 'string',
            name: 'currentA'
        },
        {
            type: 'string',
            name: 'currentB'
        },
        {
            name: 'A'
        },
        {
            name: 'B'
        }
    ]
});
这是我正在对该模型的数据执行的一些操作-
 onBeforeRender: function(component, eOpts) {
    var mystore = Ext.getStore('Mystore');
    mystore.load({
        callback: function(){
            var entity = headerStore.getAt(0);
            var bs = entity.data.B;
            var as = entity.data.A;
            var currentB = entity.data.currentB;
            var currentA = entity.data.currentA;
            bs.forEach(function(record) {
                // do some operations
            });
            as.forEach(function(record) {
                // do some other operations
            }); …我有一个有自己的视图模型的类,我在主视图中创建了这个类的2个实例.在主视图中,我想传递我的2个类实例的值,但我似乎无法使这个工作......我想我只是不理解一些非常简单的概念.
预期的结果是value1 + value2字段具有value1和value2的串联,第一个myValue显示value1,第二个myValue显示value2.这是我的代码和示例:
Ext.application({
  name: 'Fiddle',
  launch: function() {
    Ext.define('MyViewModel', {
      extend: 'Ext.app.ViewModel',
      alias: 'viewmodel.myView',
      formulas: {
        doSomething: function(getter) {
          console.log(getter('value1'), getter('value2'));
          return getter('value1') + getter('value2');
        }
      }
    });
    Ext.define('MyView', {
      extend: 'Ext.panel.Panel',
      xtype: 'myView',
      viewModel: {
        type: 'myView'
      },
      config: {
        myValue: null
      },
      publishes: {
        myValue: true
      },
      items: [
        {
          xtype: 'displayfield',
          fieldLabel: 'myValue',
          bind: {
            value: '{myValue}'
          }
        }
      ]
    });
    Ext.create('Ext.container.Container', {
      renderTo: Ext.getBody(),
      items: [
        {
          xtype: 'displayfield',
          fieldLabel: …