标签: extjs5

EXTJS5 MVVM:从视图控制器获取全局控制器

从全局控制器,我可以很容易地获得对另一个全局控制器的引用

this.getController('TargetController');
Run Code Online (Sandbox Code Playgroud)

但是,在视图控制器的上下文中,如何获取对同一控制器的引用?即:

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....

    }

});
Run Code Online (Sandbox Code Playgroud)

可能是一些我很想念的简单,但任何帮助都会受到赞赏.

javascript extjs mvvm extjs5

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

对ExtJS表单字段使用渲染器

我正在尝试创建一个扩展textfield用于ExtJS表单的PercentField组件.我正在寻找的行为是字段显示百分比值,例如25%400%,但是当用户正在编辑字段或提交的表单是小数时,具有基础值,例如.254.

我通过在网格列中使用渲染器成功地完成了这项工作,(这里是一个小提琴),但它看起来不像是textfield有一个渲染器属性,用于在基本形式中使用该字段.我看过这些rawToValuevalueToRaw方法,但它们似乎并不是我想要的.有什么建议?

extjs extjs5

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

查询具有特定xtype的子组件

有没有一种方法来查询xtype'yourxtype'的子组件?例如,您有一个面板,此面板内部是一个位于工具栏上的自定义xtype.

findParentByType非常适合查找,但是没有像findChildByType这样的方法.而down方法仅适用于元素.Ext.ComponentQuery是一个单例,但不适用于xtypes?是否有另一种方法可以从组件中查询?

extjs extjs5

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

ExtJS5:摆脱代理中的root属性

我正在尝试将REST API连接到我的ExtJS应用程序.

对于GET /user类似的请求,我返回如下响应:

{items: [{id: 1, ...}, {id: 2, ....}], total: 2}
Run Code Online (Sandbox Code Playgroud)

所以我为此创建了一个模型:

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',
    }
});
Run Code Online (Sandbox Code Playgroud)

网格加载数据,看起来都很完美.现在我希望能够请求我的api所用的单个记录{id: 1, ...}.但是当我这样做时model.User.load(1),永远不会触发成功处理程序,因为响应不包含items属性.如果我将我的记录放在该属性中,它将起作用,但对其他API用户来说也会显得难看.

如何在没有root属性的情况下使其工作?我无法在模型上找到代理/阅读器的任何事件来动态更改它.

rest extjs extjs5

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

只要在特定列上进行拖动,就可以拖放行

我通过将以下代码添加到配置参数来启用在网格上拖放行:

viewConfig: {
        plugins: {
            ptype: 'gridviewdragdrop',
            dragGroup: 'firstGridDDGroup',
            dropGroup: 'firstGridDDGroup'
        }
    }
Run Code Online (Sandbox Code Playgroud)

它是有效的,无论如何我想拖动发生只是用户通过拖动属于第一列的元素来实现它.

我的想法是添加一个"移动"列,如下所示:

move| name | surname | age |
<-> | alex | cross   | 24  |
<-> | jim  | reynor  | 35  |
Run Code Online (Sandbox Code Playgroud)

如果我想要在第一行中移动第二行(jim),我必须将鼠标放在"< - >"符号上,然后拖动,相反如果我将鼠标放在"surname"列上,请执行和丢弃应该被禁用.

这可能吗?

extjs extjs4 extjs5

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

Extjs查看渲染问题,Uncaught TypeError:无法读取未定义的属性'tooNarrow'

您好我有以下视图,他们与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'}
        }

    ]
});
Run Code Online (Sandbox Code Playgroud)

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'}
            ]
        }
    ], …
Run Code Online (Sandbox Code Playgroud)

javascript extjs extjs4 extjs5

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

Extjs 5/6中不推荐使用"Ext.mixin.Observable #addEvents"

我们可以使用什么来代替addEvents向扩展类添加事件?

this.addEvents({
    "itemclick" : true
});
Run Code Online (Sandbox Code Playgroud)

events extjs extjs5 extjs6

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

ExtJs5:从Controller 1调用Controller 2的方法

我正在尝试使用新的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.
Run Code Online (Sandbox Code Playgroud)

在以前的版本中,this.getController('StatusBarController')用于获取任何控制器的句柄,然后调用其方法.

但是当我使用ViewController时,这在我的情况下不起作用.

任何人都可以指导我如何实现这个目标吗?而且这是否是正确/理想的方式来做这样的事情还是有更好的选择?

这是我的代码:

StatusBarView:

Ext.define('MyApp.view.statusbar.StatusBarView', {
extend : 'Ext.panel.Panel',
controller: 'StatusBarController',
region : 'south',
xtype …
Run Code Online (Sandbox Code Playgroud)

javascript model-view-controller extjs extjs5

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

ExtJs 5.0:forEach对象数组在IE8中不起作用

我有一个简单的模型-

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'
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

这是我正在对该模型的数据执行的一些操作-

 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
            }); …
Run Code Online (Sandbox Code Playgroud)

javascript foreach internet-explorer extjs extjs5

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

ExtJS 5:从绑定值设置子视图模型数据

我有一个有自己的视图模型的类,我在主视图中创建了这个类的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: …
Run Code Online (Sandbox Code Playgroud)

javascript extjs mvvm extjs5

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