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

当reloadOnSearch为false时,$location.search上的AngularJs $wat

发布时间:2020-12-17 08:56:42 所属栏目:安全 来源:网络整理
导读:我的路由的routeProvider的reloadOnSearch设置为false: $routeProvider .when( "/film/list",{ templateUrl: '/film/list.html',controller: FilmListController,reloadOnSearch: false } .... ) 我这样做是因为我不想在查询字符串更改后重新加载整个控制器
我的路由的routeProvider的reloadOnSearch设置为false:
$routeProvider
     .when(
        "/film/list",{
          templateUrl: '/film/list.html',controller: FilmListController,reloadOnSearch: false
          } 
          ....

  )

我这样做是因为我不想在查询字符串更改后重新加载整个控制器,但我仍然使用它,并且url看起来像这样:film / list?sort = isbn& order = asc& offset = 0。现在每当查询字符串更改,我想从我的控制器调用一个函数。所以我试图在控制器中设置一个$ watch:

$scope.location = $location;
$scope.$watch( 'location.search()',function( search) {
        $scope.list();
 });

但这不工作。如果我设置$ watch来观察查询字符串的单个参数的更改,那么它工作。但我不想为我的查询字符串的每个参数设置$ watch。我现在使用的解决方案是:

$scope.location = $location;
$scope.$watch( 'location.url()',function( url ) {
    if($location.path() == '/film/list')
        $scope.list();
 });

所以,不是看着搜索,我看着整个url,然后我检查路径是否是我在routeProvider中设置有条件地调用该函数。我不喜欢这个解决方案是我必须解释类型$ location.path的值匹配。

任何人可以提出一个更好的解决方案,也许解释我为什么$ watch不能为$ location.search()工作?

您可以在控制器中侦听$ routeUpdate事件:
$scope.$on('$routeUpdate',function(){
  $scope.sort = $location.search().sort;
  $scope.order = $location.search().order;
  $scope.offset = $location.search().offset;
});

(编辑:李大同)

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

    推荐文章
      热点阅读