asp.net-mvc - Angularjs 中的每个 View 是否应该有一个 Controller ?

标签 asp.net-mvc angularjs design-patterns asp.net-web-api

我来自asp.net mvc 背景,最近开始使用Angularjs。我有一个名为 Account 的简单实体通过 RESTful asp.net web api 公开。我现在正在使用 Angular 创建它的客户端。在客户端,我有创建、编辑、列表和详细信息等 View 。

我应该为每个 View 创建一个 Controller ,还是应该只有一个名为“accountsController”的 Controller 用于所有 CRUD 操作?在这种情况下,标准做法是什么?

最佳答案

不要以 CRUD 之类的“操作”来看待 Controller ,在这种情况下,你是在“与 restful API 对话”,因为 restful 服务使用 HTTP 动词来映射 CRUD 操作,例如:

PUT, POST -> Create
GET       -> Read
POST      -> Update
DELETE    -> Delete

一个好的做法是创建 angular.service 并返回 $resource 以供以后使用,将 $resource 映射到您的 CRUD 端点,如下所示:
angular.module('app').factory('Users', ['$resource',
    function($resource) {
        return $resource('users', {}, {
            update: {
                method: 'PUT'
            },
            deleteMember: {
                method: 'DELETE', 
                url:'team/member/:userId/:teamId'
            },
            addMember: {
                method: 'POST', 
                url:'team/member'
            },
            addTeam: {
                method: 'POST', 
                url:'team'
            },
            deleteTeam: {
                method: 'DELETE',
                url: 'team/:teamId'
            },
            getTeam: {
                method: 'GET',
                url: 'team/:teamId'
            },
            teams: {
                method: 'GET',
                url: 'team/list/:orgId'
            }

        });
    }
]);

您可以重用该服务并将其注入(inject)任何其他服务或 Controller , Controller 越瘦越好。

如果您想修改 UI,因为 Angular 是声明性的,而不是强制的,不建议从 Controller 修改 dom,您需要再次创建指令,指令可以在整个系统中重用。

坚持使用 slim 的 Controller ,创建服务和指令,一切顺利,最后我建议你使用 yeoman 作为工作流程并使用 cg-angular生成器,它为许多事情实现了“最佳实践”,包括应用程序文件夹结构,这对于从一开始就正确处理非常重要。

关于asp.net-mvc - Angularjs 中的每个 View 是否应该有一个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26995881/

相关文章:

c++ - 设计模式、多代理系统、机器人

c# - 添加/编辑记录的 ASP.NET MVC View 模式

asp.net-mvc - ASP.Net MVC 5 中的模块化/插件框架

asp.net-mvc - 如何禁用特定 Controller /操作的自动 ModelState 验证?

asp.net-mvc - 包含在 ClientDetailTemplate 中时,客户端模板未定义错误

javascript - Angularjs $location.path() 不重定向

javascript - 如何循环遍历数组并组合值

c# - MVC .net 核心没有正确显示特殊字符

javascript - 将 Bootstrap datetimepicker 绑定(bind)到模型 Angular 时出错

c# - MVC C# - 最简单的可能实现