没有模板/控制器组合的路由?

时间:2015-06-13 19:42:27

标签: javascript angularjs html5 angular-ui-router

我想用函数映射每个路由,而不是控制器/模板。

我只有1页,页面上唯一更改的项目是范围变量。我宁愿避免控制器和模板重新加载,我宁愿只是交换变量。

这是否可以使用$ routeProvider?

道歉不清楚,这是一个例子:

该应用是一个模板和一个控制器ThreadCtrl

app.controller("ThreadCtrl", function($scope) {
  $scope.topic = "all";
  $scope.sorting = "best";
  $scope.articles = get_articles_for_topic(...);
  $scope.$watch "topic", ...
  $scope.$watch "sorting", ...
});

模板示例:

<div ng-controller="TopicCtrl">
    {{ topic }} - {{ sorting }}
    <div ng-repeat="article in articles">
        ...
    </div>
</div>

总有一个模板和一个控制器。我想在不重新渲染控制器的情况下使用路由,只需更改范围变量。

我理解,对于这个例子,我应该重新渲染模板+控制器作为默认值,但我只是想知道我是否可以。

此问题的替代方案是“我可以将路由映射到可以访问$ rootScope的函数吗?”

谢谢:)

1 个答案:

答案 0 :(得分:0)

也许你可以利用路线中的参数?

您可以将路线定义为:

GNode GN = null;
if (m > 0 && m < GNodes.size()) {
    GN = (GNode) GNodes.get(m);
}

然后在控制器中使用该参数:

when('/Thread/:topic', {
      templateUrl: 'templates/thread.html',
      controller: 'ThreadCtrl'
});

这很可能是我会这样做的,但我也很好奇是否有更好的解决方案。