-1

每次出现视图时,我都试图调用一个函数。但它只会被第一次调用,然后不会。是否有像 iOS 的 viewWillAppear 这样的事件函数。我正在使用“初始化”事件函数,它只被调用一次。请帮忙。

看法:

Ext.define('Abc.view.abc', {
 extend: 'Ext.List',
 xtype: 'runningList',
 requires: ['Abc.store.InstancesStore','Ext.data.proxy.JsonP',],

config: {
title: 'Running',
id: 'instanceList',/*
itemTpl: '<div class="serached_listview">'+ 
        '<div>{key}  {key} </div>' +
        '<div><b>{key}</b> </div>' +
        '<div>  {key}</div>' +
        '</div>'
        ,*/
        store: 'RunningInstanceStore',
           listeners: [{
                fn: 'initialize',
                 event: 'initialize'
            }
    ]
  }
});

控制器:

 Ext.define("Abc.controller.InstancesController", {
extend: 'Ext.app.Controller',
requires: [ 'Ext.data.JsonP','Ext.device.Connection'],
config: {
    refs: { 
        main: 'mainpanel',
                     Instances: '#instanceList',
        ListView: 'runningList'
    },
    control: {
        Instances: {
            initialize: 'initializePanel',
            activate:'initializePanel'
        },
        "runningInstancesList": {
            disclose: 'listViewAccessoryTapped',
            itemtap: 'listViewTapped'
        }
    }
},
listViewAccessoryTapped:  function(view, index, item, e) {
    if(Ext.device.Connection.isOnline())
        console.log('Internet connection is available.');
    else
        console.log('Internet connection is not available.');

},
listViewTapped:  function(view, index, item, e) {




},

initializePanel: function() { 
    console.log('Hi');     **////////////////Called only once...**

}
});
4

2 回答 2

0

这些事件处理程序之一(而不是初始化)应该可以帮助您:

绘制
http://docs.sencha.com/touch/2-1/#!/api/Ext.Component-event-painted

显示
http://docs.sencha.com/touch/2-1/#!/api/Ext.Component-event-show

理想情况下,这些事件应该像这样在控制器中处理(多种方式之一)

        '#instanceList': {
            show        : 'onListShow'
        }

但您也可以像这样将侦听器添加到您的视图中:

Ext.define('Abc.view.abc', {
  extend: 'Ext.List',
  xtype: 'runningList',
  requires: ['Abc.store.InstancesStore','Ext.data.proxy.JsonP',],

  config: {
    title: 'Running',
    id: 'instanceList',
    store: 'RunningInstanceStore',
    listeners: {
      show  : function(me, opts){
        // Do whatever you want here
      }
    }
  }
});
于 2013-04-02T13:29:05.473 回答
0

在 ExtJS 中有 component.beforeactivate,每次激活组件之前都会触发

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.AbstractComponent-event-beforeactivate

但是,在 Touch 中,似乎只有 container.activate,它看起来像是在激活子组件后触发的

http://docs.sencha.com/touch/2-1/#!/api/Ext.Container-event-activate

于 2013-04-01T18:17:02.830 回答