ui-router控制器或角度控制器

时间:2015-02-15 17:34:32

标签: angularjs angular-ui-router

我正在使用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-router状态对象上的控制器定义。

我的问题是,更常见的是,定义角度控制器或ui-router控制器?

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

2 个答案:

答案 0 :(得分:1)

'什么更常见'是一个非常广泛的问题,但是。

要考虑的事情很少:

  1. 什么类型的状态以及它是如何嵌套的(如果它是一个嵌套状态,只显示大量可能没问题的数据)
  2. 控制器有多大? (2-3行逻辑可以内联处理)
  3. 如何构建您的应用?
  4. 最后,更好的做法是将所有内容置于有组织的1位并且不分割控制器定义,因此如果要从两种方法中进行选择,不要将控制器内联定义。< / p>

答案 1 :(得分:1)

我不能说什么更常见,为什么要使用第二种方法。

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

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

最后,如果我们使用JS++Typescript之类的AtScript,我们可以轻松使用继承甚至其他功能......

所以如果可能的话,不要使用内联def