Sencha touch sencha touch getView()?

Sencha touch sencha touch getView()?,sencha-touch,Sencha Touch,如何在Sencha touch中调用getView(view\u name)`?我通常在extjs上这样做,但在sencha touch上我做不到。我无法理解应用程序的概念 run_edit: function(data) { $this = this; this.mode = "update"; this.data = data; this.win = this.getView('Group_prop').create(); var form = th

如何在Sencha touch中调用
getView(
view\u name)`?我通常在extjs上这样做,但在sencha touch上我做不到。我无法理解应用程序的概念

run_edit: function(data) {
    $this = this;
    this.mode = "update";
    this.data = data;
    this.win = this.getView('Group_prop').create();

    var form = this.win.down('form');
    var util = this.getController('controller_Helper');

    form.getForm().loadRecord(data);
    util.form_lock({
        form:form,
        items:['GROUP_KODE']
    });
    util.form_require({
        form:form,
        items:['GROUP_KODE','GROUP_NAMA']
    });

    this.win.show();
},

我看到您正在尝试创建视图并将其设置为window,在sencha touch中,您可以这样做:

Ext.Viewport.add(Ext.create('MyApp.view.ViewName'));
var view = Ext.getCmp('ViewId');
Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    config: {
        refs : {
            groupProb : {
                autoCreate: true,
                selector: '#groupProb',
                xtype: 'group_prob'
            }
        },
        control: {
            ...
        },
        ...
    },
    run_edit: function(data) {
        $this = this;
        this.mode = "update";
        this.data = data;
        this.win = this.getView('Group_prop').create();

        var form = this.win.down('form');
        var util = this.getController('controller_Helper');

        form.getForm().loadRecord(data);
        util.form_lock({
            form:form,
            items:['GROUP_KODE']
        });

        this.win.show();
    },
   ...
});
run_edit: function() {
    var me = this,
        mode = 'update',
        data = data,
        groupProbPanel = me.getGroupProb();

    // This assumes that your form component has an itemId.
    // You need one inorder use the down method. 
    var form = groupProbPanel.down('#form_itemId');

    // You may want to double check this. I don't think that is how you 
    // you get the controller.
    var util = this.getController('controller_Helper');

    form.getForm().loadRecord(data);
    util.form_lock({
        form:form,
        items:['GROUP_KODE']
    });
}
...,
config: {
    refs : {
        groupProb : {
            autoCreate: true,
            selector: '#groupProb',
            xtype: 'group_prob'
        }
    },
    control: {
        groupProb : {
            show: 'run_edit'
        },
        ...
    },
    ...
},
...
您可以使用任何其他容器而不是视口,并将新创建的视图设置为该容器

Ext.getCmp('myContainerId').add(Ext.create('MyApp.view.ViewName'));
要稍后获取此视图,必须在视图中指定
id
config,然后按如下方式获取:

Ext.Viewport.add(Ext.create('MyApp.view.ViewName'));
var view = Ext.getCmp('ViewId');
Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    config: {
        refs : {
            groupProb : {
                autoCreate: true,
                selector: '#groupProb',
                xtype: 'group_prob'
            }
        },
        control: {
            ...
        },
        ...
    },
    run_edit: function(data) {
        $this = this;
        this.mode = "update";
        this.data = data;
        this.win = this.getView('Group_prop').create();

        var form = this.win.down('form');
        var util = this.getController('controller_Helper');

        form.getForm().loadRecord(data);
        util.form_lock({
            form:form,
            items:['GROUP_KODE']
        });

        this.win.show();
    },
   ...
});
run_edit: function() {
    var me = this,
        mode = 'update',
        data = data,
        groupProbPanel = me.getGroupProb();

    // This assumes that your form component has an itemId.
    // You need one inorder use the down method. 
    var form = groupProbPanel.down('#form_itemId');

    // You may want to double check this. I don't think that is how you 
    // you get the controller.
    var util = this.getController('controller_Helper');

    form.getForm().loadRecord(data);
    util.form_lock({
        form:form,
        items:['GROUP_KODE']
    });
}
...,
config: {
    refs : {
        groupProb : {
            autoCreate: true,
            selector: '#groupProb',
            xtype: 'group_prob'
        }
    },
    control: {
        groupProb : {
            show: 'run_edit'
        },
        ...
    },
    ...
},
...

有两种方法可以调用视图

一,

二,


好的,看来您正在尝试获取视图:
Group\u prop
。确保此视图在其配置中设置了
id
itemId
。e、 g

Ext.define('MyApp.view.GroupProb', {
    extend: 'Ext.Panel',
    alias: 'widget.group_prob',
    config: {
        ...
        itemId: 'groupProb',
        ...
    },
    ....
});
现在,您需要在控制器中为此视图创建一个引用以正确访问它。所以你的控制器看起来像这样:

Ext.Viewport.add(Ext.create('MyApp.view.ViewName'));
var view = Ext.getCmp('ViewId');
Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    config: {
        refs : {
            groupProb : {
                autoCreate: true,
                selector: '#groupProb',
                xtype: 'group_prob'
            }
        },
        control: {
            ...
        },
        ...
    },
    run_edit: function(data) {
        $this = this;
        this.mode = "update";
        this.data = data;
        this.win = this.getView('Group_prop').create();

        var form = this.win.down('form');
        var util = this.getController('controller_Helper');

        form.getForm().loadRecord(data);
        util.form_lock({
            form:form,
            items:['GROUP_KODE']
        });

        this.win.show();
    },
   ...
});
run_edit: function() {
    var me = this,
        mode = 'update',
        data = data,
        groupProbPanel = me.getGroupProb();

    // This assumes that your form component has an itemId.
    // You need one inorder use the down method. 
    var form = groupProbPanel.down('#form_itemId');

    // You may want to double check this. I don't think that is how you 
    // you get the controller.
    var util = this.getController('controller_Helper');

    form.getForm().loadRecord(data);
    util.form_lock({
        form:form,
        items:['GROUP_KODE']
    });
}
...,
config: {
    refs : {
        groupProb : {
            autoCreate: true,
            selector: '#groupProb',
            xtype: 'group_prob'
        }
    },
    control: {
        groupProb : {
            show: 'run_edit'
        },
        ...
    },
    ...
},
...
现在,从您的
run\u edit
函数中,您似乎正在使用
this.win
变量中的
windows
(如果我错了,请纠正我)。在Sencha Touch中,您可以使用
面板
。此外,在此函数末尾,您在
this.win
上调用
show
函数,这表明您希望在显示
this.win
时执行
run\u edit
。也就是说,您可能希望您的
运行_edit
函数如下所示:

Ext.Viewport.add(Ext.create('MyApp.view.ViewName'));
var view = Ext.getCmp('ViewId');
Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    config: {
        refs : {
            groupProb : {
                autoCreate: true,
                selector: '#groupProb',
                xtype: 'group_prob'
            }
        },
        control: {
            ...
        },
        ...
    },
    run_edit: function(data) {
        $this = this;
        this.mode = "update";
        this.data = data;
        this.win = this.getView('Group_prop').create();

        var form = this.win.down('form');
        var util = this.getController('controller_Helper');

        form.getForm().loadRecord(data);
        util.form_lock({
            form:form,
            items:['GROUP_KODE']
        });

        this.win.show();
    },
   ...
});
run_edit: function() {
    var me = this,
        mode = 'update',
        data = data,
        groupProbPanel = me.getGroupProb();

    // This assumes that your form component has an itemId.
    // You need one inorder use the down method. 
    var form = groupProbPanel.down('#form_itemId');

    // You may want to double check this. I don't think that is how you 
    // you get the controller.
    var util = this.getController('controller_Helper');

    form.getForm().loadRecord(data);
    util.form_lock({
        form:form,
        items:['GROUP_KODE']
    });
}
...,
config: {
    refs : {
        groupProb : {
            autoCreate: true,
            selector: '#groupProb',
            xtype: 'group_prob'
        }
    },
    control: {
        groupProb : {
            show: 'run_edit'
        },
        ...
    },
    ...
},
...
由于我们希望在显示
groupProbPanel
时发生这种情况,因此需要在
控件中设置一个。因此,控制器的
config
应如下所示:

Ext.Viewport.add(Ext.create('MyApp.view.ViewName'));
var view = Ext.getCmp('ViewId');
Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    config: {
        refs : {
            groupProb : {
                autoCreate: true,
                selector: '#groupProb',
                xtype: 'group_prob'
            }
        },
        control: {
            ...
        },
        ...
    },
    run_edit: function(data) {
        $this = this;
        this.mode = "update";
        this.data = data;
        this.win = this.getView('Group_prop').create();

        var form = this.win.down('form');
        var util = this.getController('controller_Helper');

        form.getForm().loadRecord(data);
        util.form_lock({
            form:form,
            items:['GROUP_KODE']
        });

        this.win.show();
    },
   ...
});
run_edit: function() {
    var me = this,
        mode = 'update',
        data = data,
        groupProbPanel = me.getGroupProb();

    // This assumes that your form component has an itemId.
    // You need one inorder use the down method. 
    var form = groupProbPanel.down('#form_itemId');

    // You may want to double check this. I don't think that is how you 
    // you get the controller.
    var util = this.getController('controller_Helper');

    form.getForm().loadRecord(data);
    util.form_lock({
        form:form,
        items:['GROUP_KODE']
    });
}
...,
config: {
    refs : {
        groupProb : {
            autoCreate: true,
            selector: '#groupProb',
            xtype: 'group_prob'
        }
    },
    control: {
        groupProb : {
            show: 'run_edit'
        },
        ...
    },
    ...
},
...

也许您想使用
Ext.getCmp(“组件id”)
。检查Sencha文档:但是对象还没有生成?此方法是控制器的一部分吗?你是说你想通过控制器获取视图吗?是的,你是对的。这是我的控制器的一部分,n我想获取我的视图(控制器视图)的实例。
通常我使用'this.myview=this.getView(“myview_name”).create()
但我不能在sencha thouchI写下并回答时这样做。我希望这是有帮助的。因为我没有太多工作要做,所以我做了一些假设。请原谅:)。我已经尝试过这个,但我想从控制器调用视图(包含在控制器中的视图)。我该怎么办?哇,你太棒了。非常感谢,我收到了这个。我试过这个。N关于这个。温,对不起,我是sencha touch的新手:)。非常感谢你。