Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Angular JS中使用一个控制器进行路由_Javascript_Angularjs_Angular Routing - Fatal编程技术网

Javascript 在Angular JS中使用一个控制器进行路由

Javascript 在Angular JS中使用一个控制器进行路由,javascript,angularjs,angular-routing,Javascript,Angularjs,Angular Routing,以下是使用角度JS创建管线的简单示例: var EmpApp = angular.module('EmpApp', [ 'ngRoute', 'EmpControllers' ]); EmpApp.config(['$routeProvider', function ($routeProvider) { $routeProvider.when('/list', { templateUrl: 'Employee/list.html', c

以下是使用角度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'
    });

}]);
来源于

正如您所见,每个操作(添加、删除等)都有不同的控制器

我的下一个问题是:是否可以只创建一个控制器,但其功能与上述控制器中的逻辑相同(只需创建控制器
EmpCtrl
和添加函数
add()
delete()
等),并将此函数应用于路由?例如:

$routeProvider.when('/list', {
        templateUrl: 'Employee/list.html',
        controller: 'EmpCtrl' <-- here somehow use EmpCtrl.list()
    }).
    when('/create', {
        templateUrl: 'Employee/edit.html',
        controller: 'EmpCtrl' <-- here somehow use EmpCtrl.add()
    })
$routeProvider.when(“/list”{
templateUrl:'Employee/list.html',

控制器:“EmpCtrl”是的,这是可能的。但是我不认为这是一个好的方法。控制器只是用来获取信息并将其绑定到作用域-不再是。如果两个状态有相同的控制器,这意味着它们共享信息,可能只是一个控制器/状态。

是的,可能会创建sin使用AngularJs控制器并将其分配给,用于列表、创建、更新和删除路由

每个CRUD功能都可以位于一个控制器内。
但是controller:'EmpCtrl'您所说的是
原型继承
。 Angular的
$scope
继承了
原型
。示例为
ui路由器

假设您有一个父状态,如:

.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
的调用是从当前调用点弹出的
调用。我们调用了
parentMethod()
处于
parent.child
状态。在那里找不到该方法。因此,它会转到父级并尝试调用
parentMethod
。这会一直持续到它到达
$rootScope
。如果在任何地方都找不到该方法,则会出现
引用错误

如果我的解释听起来令人困惑的话,谷歌
原型继承和角度$scope和$rootScope