【问题标题】:How to write handler of treeview in controller of extjs4如何在 extjs4 的控制器中编写树视图的处理程序
【发布时间】:2013-06-14 06:00:52
【问题描述】:

我在 extjs4 工作。我有带有复选框的树视图-

Ext.define('Balaee.view.qb.qbquestion.tree1', {
extend: 'Ext.tree.Panel',
title: 'Simple Tree',
id:'tree1',
alias : 'widget.tree1',
store:'qb.qbquestionStore',
displayField: 'text',
rootVisible : true,
multiSelect : true,
renderTo: Ext.getBody(),
    dockedItems: [{
        xtype: 'toolbar',
        items: {
            text: 'Get checked nodes',
            handler: function(){
                var tree = this.up('panel');
                var records = tree.getView().getChecked(),
                    names = [];

                Ext.Array.each(records, function(rec){
                    names.push(rec.get('text'));
                });

                Ext.MessageBox.show({
                    title: 'Selected Nodes',
                    msg: names.join('<br />'),
                    icon: Ext.MessageBox.INFO
                });
            }}}]});

所以我在这个处理函数中检查了树节点。我想在 extjs4 的控制器中获取那些已检查的节点。那么如何在 extjs4 的控制器中编写这个处理函数呢?或者如何通过单击控制器中的提交按钮来获取这些选中的节点?

【问题讨论】:

    标签: controller extjs4 treeview handler


    【解决方案1】:

    您需要在控制器初始化函数中添加组件事件并从那里调用回调函数。请参考以下示例。

    在视图部分

     this.buttons = [
                {
                    text: 'Save',
                    action: 'save'
                }]
    

    在控制器部分

    init: function() {
            this.control({
               'useredit button[action=save]': {
                    click: this.updateUser
                }
            });
        }
     ...
        updateUser: function(button) {
           // write your stuff here.   
        }
    

    如果您发现任何困难,请参考下面的煎茶指南示例。

    http://docs.sencha.com/extjs/4.2.0/#!/guide/application_architecture

    谢谢。

    【讨论】:

      【解决方案2】:

      在您的控制器中使用 refs 获取对您的树视图的引用 这将允许您在事件处理程序中访问您的树视图,例如

      this.getTreeView()

      您可以在控制器的 init 函数中为按钮定义事件处理程序

      试试这个,如果您在发布代码时遇到困难,我们会帮助您

      更新:

      另外,您需要在视图上定义 xtype xtype: 'tree1'

      在你的参考中,试试这个:

      refs: [{ ref: 'treeView', selector: 'tree1' }],

      现在,您应该可以在控制器方法中访问this.getTreeView()。让我们知道你的进展。

      【讨论】:

      • 感谢您的回复...我已经按照您所说的进行了尝试。在参考文献中,我写了-“{ref:'treeview',选择器:'tree1'}”......如果我写console.log(this.getTreeview)在函数内部给我未定义的错误。那么如何在控制器中编写处理程序。请有人帮助我
      • 没问题。我已经更新了上面的答案以包含有关参考的更多信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多