ui-路由器控制器或angular控制器

ui-router controller or angular controller

我正在使用 ui-router 来路由我的应用程序。在 ui-router 上,我可以像

这样定义控制器
myApp.config(function($stateProvider, $urlRouterProvider) {
  //
  // For any unmatched url, redirect to /state1
  $urlRouterProvider.otherwise("/state1");
  //
  // Now set up the states
  $stateProvider
    .state('state1', {
      url: "/state1",
      templateUrl: "partials/state1.html"
    })
    .state('state1.list', {
      url: "/list",
      templateUrl: "partials/state1.list.html",
      controller: function($scope) {
        $scope.items = ["A", "List", "Of", "Items"];
      }
    })

在这里您可以看到 ui-路由器状态对象上的控制器定义。

我的问题是,定义一个angular控制器还是ui-路由器控制器更常见?

angular.module('controllerExample', [])
  .controller('SettingsController2', ['$scope', SettingsController2]);

“什么更常见”是一个非常宽泛的问题,但是。

有几点需要考虑:

  1. 什么类型的状态及其嵌套方式(如果它是只显示大量数据的嵌套状态可能没问题)
  2. 控制器有多大? (可以内联处理 2-3 行逻辑)
  3. 您如何构建您的应用程序?

最后,更好的做法是将所有内容放在有组织的 1 个位置,而不是拆分您的控制器定义,因此如果要从这两种方法中选择,不要内联定义您的控制器.

我说不出哪个更常见,只是为什么要使用第二种方法。

首先,如果我们将控制器声明为SettingsController2(object/function),我们可以多次使用它。

其次,这种方法创建了一个真实的类型,一旦您观察性能工具(内存分析器),以后就可以很容易地追踪(找到)

最后,如果我们将使用一些 JS++,例如 TypescriptAtScript,我们可以轻松地使用 继承 甚至其他功能。 ..

所以尽可能不要使用内联定义