我想用函数映射每个路由,而不是控制器/模板。
我只有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的函数吗?”
谢谢:)
答案 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'
});
这很可能是我会这样做的,但我也很好奇是否有更好的解决方案。