【问题标题】:specifying AngularJS controller: benefits using ngController vs. $routeProvider指定 AngularJS 控制器:使用 ngController 与 $routeProvider 的好处
【发布时间】:2014-07-04 23:55:24
【问题描述】:

有两种方法(AFAIK)将控制器与视图模板/部分关联:$routeProvider 中指定的路由和ngController 指令。特别是(但不限于)简单路由,是否有任何优势/效率优于另一个?

我的项目目前使用 $routeProvider 方法,但我被赋予了嵌套视图的任务。使用 ngInclude 似乎很简单,只要部分指定其 ngController。

【问题讨论】:

    标签: angularjs angularjs-routing angularjs-controller


    【解决方案1】:

    这个问题真的归结为设计,因此它有点基于意见。请记住,我所知道的最佳指导是:

    • $routeProvider - 允许您为模板指定单个控制器。由于这是路由的一部分,因此很容易找到与页面一起使用的控制器。我使用它来存储和加载整个页面逻辑,而不是特定于元素的逻辑。

      这也很重要,因为这意味着您可以为两条不同的路由加载完全相同的模板,但行为和数据可能会有所不同,因为控制器可以更改。这不是使用ngController 选项容易做到的事情。

    • ngController - 这会将控制器范围限定为页面/模板上的特定元素。当您在单个页面上需要多个控制器时,这可以使代码更易于阅读,并且允许控制器的范围更明确。

    所以它真的归结为范围意图。希望这些规则在决定使用哪一个时会有所帮助。

    【讨论】:

      【解决方案2】:

      如果您将包含所有脚本的视图视为一个独立的包,由一个人或团队开发,那么 ngController 是您的最佳选择,恕我直言。

      另一方面,$routeProvider 为您提供高级功能,例如通过路由的resolve 属性注入值。这样,您可以将 AJAX 加载的数据直接注入您的控制器,例如,而不是让控制器自行获取。或者更改路线以等待该数据等。

      顺便说一句:如果您需要路由和嵌套视图,可以查看angular ui-router

      【讨论】:

      • 非常感谢您的回答!我目前使用的是 $stateProvider 而不是 $routeProvider,这里也适用吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      相关资源
      最近更新 更多