0

最近我遇到了一个问题,我需要使用 Angular 更新页面,更新 url,但不重新加载页面。使困惑?让我进一步解释一下。我有一个数据表(使用 ng-grid),我想要它,所以当我单击第 1 行时,角度打印出一个并将 url 更改为 'currentUrl/1' 而无需重新加载页面。然后我单击第 4 行,打印出 4 并将 url 更改为“currentUrl/4”。这可能与角度来做到这一点。为了使我的页面不会在每次单击一行时重新加载,我输入了以下内容

var lastRoute = $route.current;
    $scope.$on('$locationChangeSuccess', function(event) {
        $route.current = lastRoute;
    });

它做了我想要的一切,改变了 url,页面不会重新加载,但现在 angular 没有更新那个数字。我究竟做错了什么?

4

1 回答 1

0

查看打印出数字的代码部分会有所帮助,但是您在不刷新路由的情况下更改 URL 的代码看起来不错。

如果没有更多信息,黑暗中的一枪是您的控制器正在更新一个$scope变量,但 Angular 没有应用此更新。

尝试像这样包装变量更新:

$scope.$apply(function() {
  $scope.numberToPrint = newNumber;
});

调用背后的基本思想$scope.$apply是,您必须手动诱使 Angular 更新任何侦听变量的绑定。尽管这通常应该被注意,但可能发生的情况是,通过防止发生路由更改,您实际上并没有让 Angular 消化新变量。

这是一篇可以$apply更好地解释的文章。

于 2013-08-20T01:34:37.647 回答