Extjs MVVM - Slider小部件更改事件

时间:2015-07-15 12:01:09

标签: javascript extjs mvvm

在MVVM结构中,我很困惑如何从一些视图元素触发控制器中的某些功能。按钮和一些简单的东西的处理程序正在工作,但在这里我有一个例子,我无法弄清楚。

https://fiddle.sencha.com/#fiddle/qcf

或者看

Ext.define('MVVM.view.Master', {
extend : 'Ext.grid.Panel',
xtype  : 'mvvm-MasterView',
requires: [
    'Ext.grid.column.Action',
    'Ext.ProgressBarWidget',
    'Ext.slider.Widget',
    'Ext.sparkline.*'
],

title : 'Master Panel',

store : 'People',

columns: [
    { 
        text      : 'Name',  
        dataIndex : 'name' 
    },{
        text     : 'Slider',
        xtype    : 'widgetcolumn',
        width    : 120,
        dataIndex: 'progress',
        widget: {
            xtype: 'sliderwidget',
            minValue: 0,
            maxValue: 1,
            decimalPrecision: 2,
            listeners: {
                change: function(slider, value) {
                        //how to trigger something in the controller?

                    }                        
                }
            }
        }
    },        
    { 
        text      : 'Email', 
        dataIndex : 'email', 
        flex      : 1 
    },
    { 
        text      : 'Phone',
        dataIndex : 'phone' 
    }
]

});

每次滑块更改时,我都需要在控制器中调用一个函数。怎么做?

这不起作用:

listeners: {
                    change: 'controllerFunction'
    }

由于

1 个答案:

答案 0 :(得分:0)

如果你的意思是普通的控制器而不是ViewController,那么你可以这样做:

var controller = MyApp.app.getController('MyApp.controller.MainController'); controller.doMethod();

如果您的意思是View Controller,那么本文非常有用:

https://www.sencha.com/blog/using-viewcontrollers-in-ext-js-5/