使用一个控制器在Angular JS

时间:2015-07-13 11:22:21

标签: javascript angularjs angular-routing

以下是使用Angular JS创建路径的简单示例:

var EmpApp = angular.module('EmpApp', [
    'ngRoute',
    'EmpControllers'
]);

EmpApp.config(['$routeProvider', function ($routeProvider) {

    $routeProvider.when('/list', {
        templateUrl: 'Employee/list.html',
        controller: 'ListController'
    }).
    when('/create', {
        templateUrl: 'Employee/edit.html',
        controller: 'EditController'
    }).
    when('/edit/:id', {
        templateUrl: 'Employee/edit.html',
        controller: 'EditController'
    }).
    when('/delete/:id', {
        templateUrl: 'Employee/delete.html',
        controller: 'DeleteController'
    }).
    otherwise({
        redirectTo: '/list'
    });

}]);

来自here

的来源

正如您所看到的,每个动作都有不同的控制器(添加,删除等)

我的问题是下一个:是否可以只创建一个控制器但功能与上面的控制器具有相同的逻辑(只需创建控制器EmpCtrl并添加函数add(),{{1}等)并将此功能应用于路线?示例:

delete()

如果有可能是好方法吗?

3 个答案:

答案 0 :(得分:0)

是的,这是可能的。但是我不会说这是一个好方法。控制器只是意味着获取信息并将其绑定到范围 - 不再需要。如果两个状态具有相同的控制器,这意味着它们正在共享信息,而可能只是一个控制器/状态。

答案 1 :(得分:0)

是的,可以创建一个AngularJs控制器并将其分配给列表,创建,更新和删除路由。

每个CRUD功能都可以在一个控制器内部。 但控制器:' EmpCtrl' < - 这里以某种方式使用EmpCtrl.list()这是不可能的。 AngularJs仅表示控制器类。

答案 2 :(得分:0)

您在谈论String[] allParams = ArrayUtils.add(otherParams, 0, param1); //Insert the first param at the first position of the array. 。 Angular的prototypical inheritance继承$scopeprototypically的示例。

假设您的父状态如下:

ui-router

上述父母的子女状态如下:

.state(parent, {
  abstract: true,
  controller: function($scope) {
    $scope.parentMethod = function() {
      console.log("Found on parent")
    }
  }
})

来自当前通话点的.state(parent.child, { controller: function($scope){ $scope.parentMethod(); // Implementation at parent state } }) 来电是parentMethod。我们在bubbled up州调用了parentMethod()。它无法在那里找到。因此,它会转到父级并尝试调用parent.child。这一直持续到parentMethod。如果在任何地方都找不到该方法,则会获得$rootScope

如果我的解释听起来有点混乱,请点击Reference Error