0

我想将水平导航栏添加到由 extjs4.1 开发的应用程序中,为此我将工具栏添加到视口。

var toolbar = Ext.create('Ext.toolbar.Toolbar', {
    id: 'header',
    region: 'north',
    items: [
        {
            // xtype: 'button', // default for Toolbars
            text: 'Button'
        },
        {
            xtype: 'splitbutton',
            text : 'Split Button'
        },
        // begin using the right-justified button container
        '->', // same as { xtype: 'tbfill' }
        {
            xtype    : 'textfield',
            name     : 'field1',
            emptyText: 'enter search term'
        },
        // add a vertical separator bar between toolbar items
        '-', // same as {xtype: 'tbseparator'} to create Ext.toolbar.Separator
        'text 1', // same as {xtype: 'tbtext', text: 'text1'} to create Ext.toolbar.TextItem
        { xtype: 'tbspacer' },// same as ' ' to create Ext.toolbar.Spacer
        'text 2',
        { xtype: 'tbspacer', width: 50 }, // add a 50px space
        'text 3'
    ]
});
var viewport = Ext.create('Ext.Viewport', {
    layout: {
        type: 'border',
        padding: 5
    },
    defaults: {
        split: true
    },
    items: [toolbar,{

但我想通过服务器创建水平导航栏,因为任何类型的用户都有特定的导航栏,例如管理员可以在他的导航栏中看到 createUser 但其他用户在导航栏中看不到它。我不知道我该怎么做这与 extjs4 中的工具栏。有没有其他方法可以做到这一点?或者我如何通过服务器为任何用户创建工具栏项目?

4

1 回答 1

1

因此,例如,当您登录时 - 您从具有用户访问权限的服务器数据返回,这些数据与您的工具栏相关(或无论您如何获取此数据)。你有你的控制器,它管理你的视图。您的视图包含您的工具栏。但默认情况下,您的工具栏是隐藏的。您可以添加到您的工具栏方法,如 - showAdminButtons()、showSimpleUserButtons()。一旦您从具有用户访问权限的服务器数据中获取 - 您检查用户是什么并在您需要的视图方法中调用。但我的建议是,如果您的工具栏应该在用户交互期间更改 - 创建您需要的所有按钮,并且只在正确的时间显示/隐藏您需要的内容。这将防止每次在 dom 中创建按钮。否则,如果您只创建一次工具栏 - 例如在方法 showAdminButtons() 中创建此按钮。并且不要 不要忘记规则 - 不信任来自客户端的数据。并检查是否允许执行此操作。

于 2012-12-08T19:40:30.703 回答