Angularjs:仅将配置用于一个控制器

在一个页面上,我根据用户选择(过滤器)通过ajax加载内容,以确保在用户重新加载或登陆页面时加载的内容保持不变,我将选中的过滤器放入url查询字符串中.由于我在此特定页面上通过ajax加载内容,因此每次用户选择新过滤器时都不需要重新加载整个页面,因此我阻止浏览器使用以下配置对URL更改做出反应:

app.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(true);
}]);

但是这会影响整个应用程序并阻止所有其他页面重新加载url更改,这是我不想要的行为.如何使此配置仅影响我的应用程序中的一个特定控制器?

最佳答案 如果您的目标是在查询字符串更改时阻止重新加载页面,则html5Mode完全是该作业的错误工具.您想要reloadOnSearch:false,可以全局应用或应用于单个路由:

$routeProvider
  .when('/foo', {
    controller: 'fooCtrl',
    templateUrl: 'foo.html',
    reloadOnSearch: false
  },
  ...
);

https://docs.angularjs.org/api/ngRoute/provider/$routeProvider

点赞