首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Extjs4 mvc设计思想

Extjs4 mvc设计思想
EN

Stack Overflow用户
提问于 2012-12-20 15:38:07
回答 2查看 324关注 0票数 5

我仍然在学习Extjs和mvc,所以我有一个设计问题,我相信有人可以回答我。我的问题是:

我有两个控制器处理两个不同的视图。根据用户类型调用这两个控制器中的任何一个来呈现正确的视图。因此,在我的例子中,如果用户是admin,那么他们将获得基于凭据的管理视图,如果用户是标准用户,那么他们将获得标准视图。应该将决策逻辑放在app.js中,还是应该有另一个控制器来决定要调用哪个控制器?

我正在思考的一种方式:

管理控制器

代码语言:javascript
复制
Ext.define('adminController', {

      // handles admin 
})

标准用户控制器

代码语言:javascript
复制
Ext.define('standardController', {

      // handles standard 
})

App.js

代码语言:javascript
复制
   Ext.application({
   name: 'MTK',
   autoCreateViewport: true,

     if(admin) {
       controllers: ['adminController']
     }
     else(std){
       controllers: ['standardController']
     }
});

另一个想法:

管理控制器

代码语言:javascript
复制
Ext.define('adminController', {

    // handles admin 
})

标准用户控制器

代码语言:javascript
复制
Ext.define('standardController', {

    // handles standard
})

主控制器

代码语言:javascript
复制
Ext.define('mainController', {

   if(admin){
      call adminController
   } 
   else(std){
      call standardController
   }
})
EN

回答 2

Stack Overflow用户

发布于 2012-12-20 20:16:54

有趣的问题是,我同意@sra的观点,即它也许不是通过客户端逻辑来实现这一目的的正确方法,尽管它并不是说它不起作用。

在我一直在开发的应用程序中,我们使用了定义所有控制器的方法,这些控制器可能被调用,也可能不是在“nav”风格的控制器中调用的。这是唯一一个我们直接实例化,然后基于缺省值,然后是直接交互,我们选择提供适当的控制器和视图,这有点像@sra建议的第二种方法。

我认为sra的第一种方法在总体上是明智的,但是当您可能有一个视图,作为一个管理员应该是可编辑的,并且作为一个用户应该是只读的,那么问题就出现了。在这种情况下,您不想写两个视图。

有一件事我没有试过(但这个问题让我想要!)返回a)一个基于服务器端逻辑的略有不同的模型,例如“user”或“readonlyuser”,并将其弹出到相同的视图中(以保存需要两个视图),或者返回一个更复杂的模型,每个数据属性都带有“可编辑”标志。这可以用来呈现不同的字段,或者在应用程序中呈现不同模式的字段……我知道这并不能回答问题,对您所选择的方法感兴趣,以及您想报告的任何发现!

票数 2
EN

Stack Overflow用户

发布于 2012-12-20 20:30:40

我认为正如sra正确指出的那样,让服务器向您发送有关登录用户类型的正确信息。在客户端,让一个控制器决定呈现哪个视图。这应该是处理登录页面的同一个控制器。卡片视图是您可以用于此目的的布局。在呈现页面之后,让其他控制器处理在该视图中触发的事件。

而且,控制器不应该执行视图的呈现部分,即视图的工作,只使用控制器来响应视图中触发的事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13975570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档