为什么控制器对路线更新没有响应?

2024-03-16

我想保留控制器的实例而不重新加载。我设置reloadOnSearch为 false,我在控制器中管理路由更改。这是代码。

这是我的链接的示例<a href="products/page/2">next</a>。我定义了以下模块。

angular.module('app.products', ['ngRoute', 'ngResource'])
.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
            .when('/:section/:view/:number', {
                templateUrl: 'tpl/table.html',
                controller: 'ProductsCtrl',
                controllerAs: 'productsCtrl',
                reloadOnSearch: false
            });
}])
.controller('ProductsCtrl', ['$scope', '$routeParams', '$location', ProductsCtrl]);

控制器

function ProductsCtrl($scope, $routeParams, $location) {

    $scope.$on('$routeUpdate', function () {
        console.log("routeUpdate");
    });

}

但控制器不会对更改的路线做出响应,并且文本不会写入控制台输出。


在角度术语中,“搜索​​”仅指 URL 的查询字符串参数部分。例如:?key=value&page=42

“路径”指的是没有该查询字符串的 URL。这里/products/page/2是一条路径。

设置时reloadOnSearch: false你告诉 Angular 不要重新加载视图和关联的控制器only查询字符串参数发生变化。

  • 因此,如果路径发生变化,例如您从/products/page/2 to /products/page/3,那么视图仍然会重新加载。不$routeUpdate将被解雇,因为没有必要这样做。您将从中获得新参数$routeParams当再次调用控制器初始化函数时。
  • 但是,如果路径没有更改,但只有查询字符串参数发生更改。例如,当您从/products?page=2 to /products?page=3。那么视图将不会被重新加载并且$routeUpdate将被广播。

所以这里的解决方案是定义page作为查询字符串参数而不是路径参数:

angular.module('app.products', ['ngRoute', 'ngResource'])
.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
            .when('/:section', {
                templateUrl: 'tpl/table.html',
                controller: 'ProductsCtrl',
                controllerAs: 'productsCtrl',
                reloadOnSearch: false
            });
}])
.controller('ProductsCtrl', ['$scope', '$routeParams', '$location', ProductsCtrl]);

控制器:

function ProductsCtrl($scope, $routeParams, $location) {
    $scope.setupView = function setupView(section, page) {
        // Setup you view here
        // ...
    };

    $scope.$on('$routeUpdate', function () {
        // This is called when only the query parameters change. E.g.: ?page=2
        $scope.setupView($routeParams.section, $routeParams.page)
    });

    // This one is called when the the path changes and the view is reloaded.
    $scope.setupView($routeParams.section, $routeParams.page)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么控制器对路线更新没有响应? 的相关文章

随机推荐

  • 删除表中的行会导致 LOCKS

    我正在运行以下命令从大型表 1 5 亿行 中批量删除行 DECLARE RowCount int WHILE 1 1 BEGIN DELETE TOP 10000 t1 FROM table t1 INNER JOIN table2 t2
  • 为什么 React useState 钩子不能在 for 循环中工作?

    我很好奇为什么在 for 循环中设置状态不能按预期工作 这是我使用钩子的代码 const count setCount useState 0 const onButtonPress gt for let i 0 i lt 100 i set
  • 此脚本(使用 Outlook 发送电子邮件)如何工作?

    谁能帮助我了解 MAPI 的工作原理 我有一个简单的 vbscript 它使用 MAPI 发送电子邮件 它工作得很好 但是 我不知道它是如何做到的 后台发生了什么 Const ForReading 1 Set args WScript Ar
  • Jquery - 根据 的内容应用类

    我有一个水平导航菜单 我可以编辑其源代码 我唯一的选择是在通过 JQUERY 加载时动态添加类 假设我有 3 个选项卡 Home Profile Blog 每个都有一个链接 如下所示 a href home html Home a JQUE
  • 按距给定的升序距离对点数组进行排序

    我需要你的帮助 我有一个已知坐标的点 例如 x 5 y 4 和每个代表点的对象数组 x 2 y 6 x 14 y 10 x 7 y 10 x 11 y 6 x 6 y 2 现在我需要按距给定点的距离按升序对数组进行排序 例如 x 6 y 2
  • 识别表中所选行何时已被选择

    我有一个p datatable在 primefaces 中 我有不同的侦听器 以不同的方式在数据表中选择行事件 我需要确定表中所选行何时已被选择 我该怎么做 我需要这个因为我不想那个p blockUI当我选择表中已选择的行时运行 有我的页面
  • textcat -> 不允许架构额外字段

    我一直在尝试练习从本教程中学到的知识 https realpython com sentiment analysis python https realpython com sentiment analysis python 使用 PyCh
  • 如何仅使 Dropzone.js Previews Div 可点击而不是整个表单

    我必须使用 dropzone js 表单 它将几个输入和一个文件上传信息发送到另一个页面 我的 dropzone 代码如下所示 gt Dropzone options mydropzone maxFiles 1 maxFilesize 10
  • 如何在Python中根据特定日期提取前两年的数据?

    我有一个 csv 文件 其中包含过去 3 年的时间序列月度数据 根据今天的日期 我只想读取前两年的数据来预测未来 Data file example has data from 01 01 15 to 31 10 19 Date Value
  • iOS 10 后台 CoreBluetooth 广告

    首先 我有一台 iPad Air 2 和一台 iPhone 7 为了进一步阅读 我们估计该应用程序在 iPad 上处于活动状态并打开 在 iPhone 上处于后台模式 该应用程序完全相同 即使具有相同的蓝牙服务 UUID 和相同的 Data
  • UIDocument 未保存?

    无论我尝试什么 这都行不通 我正在尝试使用UIDocument在本地保存我的 文本 文件 当我创建文件 即未加载 时 它保存得很好 However 如果我通过打开文件然后保存来加载文件 则它根本不会保存 EDIT 我尝试在应用程序进入后台时
  • SQL 条件并集

    问题 我有一个返回文件列表的 SQL 函数 现在我应该使用联合将一个附加列表加入到该列表中 但前提是用户是管理员 那可能吗 就像是 CREATE FUNCTION tfu CMS Process bIsAdmin bit Add the p
  • 使用箭头键滚动 div

    这类似于SO 如何用箭头键移动div https stackoverflow com questions 4950575 how to move a div with arrow keys 所以也许一个明确且知情的 不 就足以作为答案 我可
  • Passport js通过url验证

    我在我的应用程序中使用 Express JS 和 Passport JS 我想为新用户提供通过特定 URL 自动登录一次的机会 我可以使用 URL 中的信息从数据库中获取用户 因此我有一个 User 对象 带有 id 电子邮件 散列密码等
  • 在 HttpWebRequest 中添加自定义标头

    我需要添加一些自定义标头HttpWebRequest目的 如何添加自定义标头HttpWebRequestWindows Phone 7 中的对象 您使用Headers具有字符串索引的属性 request Headers X My Custo
  • 如何使用 Backbone 处理单页应用程序的 UI 状态

    请耐心等待 因为我来自传统的 Web 开发背景 使用 ASP Net 甚至服务器端 MVC 我正在尝试使用 Backbone js 构建一个高度交互的单页应用程序 以帮助组织我的 javascript 代码并构建 UI 我在构建 UI 组件
  • JAVA_HOME 未正确定义 编译时出错

    我正在 cocoa 中开发一个使用一些 java 类的应用程序 我收到错误 JAVA HOME 未正确定义我们无法执行 System Library Frameworks JavaVM framework Home bin java 我不知
  • Java,默认编码[重复]

    这个问题在这里已经有答案了 可能的重复 jvm默认编码是什么 https stackoverflow com questions 1006276 what is the default encoding of jvm Hello 当用于处理
  • 函数式反应式编程的“信号”表示是否正确?

    我一直在研究 FRP 并发现了许多不同的实现 我见过的一种模型我将其称为 信号 表示 这一本质将事件和行为结合成一个实体 首先 信号是一个对象 其值是一种行为 其次 信号具有一个事件 流 可以将其视为标准数据结构并对其进行操作 您可以在信号
  • 为什么控制器对路线更新没有响应?

    我想保留控制器的实例而不重新加载 我设置reloadOnSearch为 false 我在控制器中管理路由更改 这是代码 这是我的链接的示例 a href products page 2 next a 我定义了以下模块 angular mod