如何让Sencha控制器响应视图中的滑动事件?

时间:2012-03-21 05:53:03

标签: sencha-touch extjs sencha-touch-2

我有一个数据视图,我想检测一下。如果我能在控制器中听到它,那就太好了,但据我所知,我不能那样做。我的测试证实了这一点。所以我需要在视图中听取事件。目前我正在我的数据视图的initialize方法中这样做:

initialize: function() {
    var el = Ext.get("list");
    el.on('swipe', function(event) {
      alert(event.direction);
    });
}

所以有几件事:

  • 我的理解是否正确,我必须在视图中监听这样的DOM事件?
  • 这是在数据视图上设置滑动侦听器的最佳方法吗?我似乎无法通过配置对象使其工作。
  • 如何让我的控制器知道滑动?滑动发生时需要操纵视图(比如更改视图大小)。这方面的最佳做法是什么?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为这就是你所追求的,同样的想法只是将范围改为控制器:

Ext.define('app.controller.myListControler', {

    extend: 'Ext.app.Controller',

    config: {

        refs: {
            list: { selector: 'myList', autoCreate: true, xtype: 'myList' }
        }

    },

    init: function () {

    },

    launch: function () {

         this.getList().on('swipe', this.onSwipe);

    },

    onSwipe: function (event) {
         console.log(event.direction);
    }

}

答案 1 :(得分:2)

将组件的事件放在控制器中总是更好。因此,首先在控制器中为该数据视图创建 ref

refs : {
   listView : 'list' //Or a selector to get the reference
},
control : {
   listView : {
       // Dataview has an "itemswipe" event - not "swipe" event
       itemswipe : function(dataview, index, target, record){
           //Do here what you want 
       }
   }
}

这应该有效(未经测试)。