Sencha Touch - hasParent()返回false; getParent()返回undefined;在具有父级的组件上

时间:2013-03-14 06:04:51

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

我有一个简单的视图,左边有一个列表,还有一个容器,用于显示右边定义的详细列表项的详细信息:

Ext.define('app.view.activity.ListContainer', {
    extend: 'Ext.Container',
    alias: 'widget.activitylistcontainer',
    requires: [
        'app.view.activity.List',
        'app.view.activity.ListDetail'
    ],
    config: {
        layout: {
            type: 'hbox'
        },
        items: [
            {
                xtype: 'activitylist',
                flex: 4
            },
            {
                xtype: 'activitylistdetail',
                flex: 5
            }
        ]
    }
});

加载activity.List商店时,我希望activity.ListDetail显示商店中第一个记录的详细信息。我的问题是我无法访问activity.ListContainer,因为它未被识别为activity.List的父级。

onActivityListInitialize: function(component, options){
    var activityStore = Ext.create('app.store.Activity');

    activityStore.on('load', function(store, records, successful, operation, eOpts){
        var activityListHasContainer = component.hasParent(),
            activityListContainer = component.getParent(),
            activityListContainerUp = component.up('activitylistcontainer');
        console.log(component, component.parent, activityListHasContainer, activityListContainer, activityListContainerUp);
    });

    component.setStore(activityStore);
}

console.log的输出为Object, undefined, false, undefined, undefined。我在component.parent中添加了log,因为当我检查对象时,有一个parent属性,但无论出于何种原因,当undefined显示时,它都会显示log

有人可以帮忙解释一下吗? activity.ListContainer在Sencha中不被视为activity.List的父级吗?或者它是我的应用程序中的其他东西搞砸了吗?如果有帮助,activity.ListContainer位于navigationview

1 个答案:

答案 0 :(得分:0)

在触发activity.ListContainer事件时,activity.ActivityList initialize不存在。我的解决方案是将此方法移至activity.ListContainer initialize事件。