【问题标题】:Angular JS $location.path() getter not updatingAngular JS $location.path() getter 未更新
【发布时间】:2016-10-19 22:39:09
【问题描述】:

我想使用 $location.path() 方法返回 URL 路径,这样我就可以在 ng-hide 指令中编写一些条件语句。我在控制器中创建了以下内容:

$scope.pathLocation = $location.path();

然后我在我的 html 中插入了 {{pathLocation}} 以确保它返回正确的路径,它就是。当我加载不同的视图时,问题就来了。 pathLocation 不会更新。如果我在新页面视图上手动刷新我的浏览器,它确实如此。 `

这是我的代码的缩写版本: 控制器:

(function(){
  var amApp = angular.module('amApp', ['ngRoute', 'ngCookies','ngAnimate' ]);

  amApp.controller('WelcomeController', ['$scope', '$location', function WelcomeController($scope, $location) {
    $scope.pathLocation = $location.path();
  }]);
})();

这是 HTML:

<html lang="en" ng-app="amApp">
  <body ng-controller="WelcomeController as welcome">
    <nav>menu's here to different views in SPA</nav>
    {{pathLocation}}
    <div ng-view></div>
  </body>

【问题讨论】:

  • 如何加载不同的视图?如果您使用$location.path(newpath),它应该可以工作,但如果您使用任何其他仅加载视图的方法,那么您可能还需要设置位置。 (即加载视图不等于更改位置)
  • 当您只在一个地方分配值时,为什么会期望它神奇地更新?听起来你想在某个事件上分配pathLocation,也许是$locationChangeSuccess

标签: angularjs routes ngroute


【解决方案1】:

正如我在评论中提到的,您的代码中没有任何内容会更新您的 pathLocation 属性。试试添加这个

$scope.$on('$locationChangeSuccess', function() {
    $scope.pathLocation = $location.path();
});

【讨论】:

  • 做到了,谢谢。是的,我正在使用锚标记和 ng-href 进行更新,所以它没有更新。当它说路径方法会随着路径更改自动更新时,我误解了文档,
【解决方案2】:

在作用域上发布函数:

amApp.controller('WelcomeController', ['$scope', '$location', function WelcomeController($scope, $location) {
    //$scope.pathLocation = $location.path();
    $scope.locationPathFn = $location.path;
}]);

然后执行HTML中的函数:

<html lang="en" ng-app="amApp">
  <body ng-controller="WelcomeController as welcome">
    <nav>menu's here to different views in SPA</nav>
    {{locationPathFn()}}
    <div ng-view></div>
  </body>

然后在每个摘要循环中,$location.path() 函数将被检查并保持最新的视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2015-11-30
    • 2021-09-06
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多