加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 后退按钮上的Angular UI路由器重载控制器按

发布时间:2020-12-17 17:44:04 所属栏目:安全 来源:网络整理
导读:我有一个可以有许多可选查询参数的路由: $stateProvider.state("directory.search",{ url: '/directory/search?nameemail',templateUrl: 'view.html',controller: 'controller' 当用户填写表单以搜索目录时,$scope中的函数会更改导致控制器重新加载的状态:
我有一个可以有许多可选查询参数的路由:

$stateProvider.state("directory.search",{
                url: '/directory/search?name&email',templateUrl: 'view.html',controller: 'controller'

当用户填写表单以搜索目录时,$scope中的函数会更改导致控制器重新加载的状态:

$scope.searchDirectory = function () {
            $state.go('directory.search',{
                name: $scope.Model.Query.name,email: $scope.Model.Query.email
            },{ reload: true });                   
        };

在控制器中我有一个条件:if($state.params){return data}指示我的服务是否会被查询.

除非用户点击浏览器的前进和/或后退按钮,否则此功能非常有效.在这两种情况下,状态(路由)都会正确更改查询参数,但不会重新加载控制器.

根据我的阅读,只有在实际路线发生变化时才会重新加载控制器.反正有没有让这个例子只使用查询参数工作,还是我必须使用不断变化的路线?

解决方法

您应该听取事件的成功页面更改,$locationChangeSuccess.查看文档 https://docs.angularjs.org/api/ng/service/ $位置.

还有一个类似的问题在这里回答了How to detect browser back button click event using angular?.

当该事件触发时,您可以将您在页面加载上运行的任何逻辑放在控制器初始化时需要运行的逻辑上.

就像是:

$rootScope.$on('$locationChangeSuccess',function() {
    $scope.searchDirectory()
});

或者更好的设置如:

var searchDirectory = function () {
    $state.go('directory.search',{
        name: $scope.Model.Query.name,email: $scope.Model.Query.email
    },{ reload: true });

$scope.searchDirectory = searchDirectory;

$rootScope.$on('$locationChangeSuccess',function() {
    searchDirectory();
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读