Angularjs / Javascript不重新加载页面,但更改网址和更新屏幕

时间:2013-08-20 01:01:02

标签: javascript angularjs

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

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

它做了我想做的一切,更改网址,页面没有重新加载,但现在角度不更新该数字。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

尝试包装变量更新,如下所示:

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

调用$scope.$apply背后的基本思想是你必须手动哄骗Angular更新任何监听变量的绑定。虽然通常应该注意这一点,但可能发生的是,通过防止路径更改发生,您实际上并没有将Angular摘要化为新变量。

Here is an article which can explain $apply better.