用于不同视图的相同角度控制器

时间:2014-10-24 06:52:45

标签: angularjs ng-init

我需要列出,编辑和删除实体。我对每个操作都有不同的看法。我想知道对于适用于每个操作的这些操作使用相同的Angular just控制器是否是一个好习惯,或者每个操作是否应该有一个单独的控制器?

如果对这些操作使用相同的控制器,是否可以在加载不同视图时调用不同的功能?因此,当用户进入列表视图时,在页面加载时调用列表方法,当他进入编辑视图时,在编辑视图的加载时调用控制器的编辑方法。我设法通过使用ngInit调用方法来实现这一点,但显然在v1.2中不建议这样做,并且只能与ngRepeat一起使用。

我的问题与此类似。 Angular - Using one controller for many coherent views across multiple HTTP requests

但是我还想知道是否有办法根据控制器使用的视图调用同一控制器的不同初始化方法。

2 个答案:

答案 0 :(得分:0)

更好的方法是编写可以跨控制器使用的实用程序服务。在不同的控制器中使用此服务。

您的服务将如下所示:

(function() {
'use strict';
// this function is strict...

angular
    .module('myapp.services', [])
    .service('Utility', function() {
        var Utility = {};

        Utility.edit = function(id, dataset) {
          //perform edit related task here 
        };

        Utility.delete = function(id, dataset) {
          //perform edit related task here 
        };
        return Utility;
    })
}());

答案 1 :(得分:0)

我在这里得到了答案:Using same controller for all CRUD operations (Rails-alike)

显然,为每个视图使用不同的控制器是一个好习惯,它不应该作为服务工作。对于从MVC / WebAPI进入角色的人来说,这是完全不同的。