最近我遇到了一个问题,我需要使用angular更新页面,更新url,但不重新加载页面。困惑?让我进一步解释一下。我有一个数据表(使用ng-grid),我想要它,所以当我点击第1行时,角度打印出一个并将网址更改为'currentUrl / 1'而不重新加载页面。然后我点击第4行,打印出4并将网址更改为'currentUrl / 4'。这有可能用角度来做到这一点。为了在每次点击一行时都不重新加载我的页面,我将以下内容
var lastRoute = $route.current;
$scope.$on('$locationChangeSuccess', function(event) {
$route.current = lastRoute;
});
它做了我想做的一切,更改网址,页面没有重新加载,但现在角度不更新该数字。我做错了什么?
答案 0 :(得分:0)
查看打印出数字的代码部分会很有帮助,但是在不刷新路径的情况下更改URL的代码看起来很好。
如果没有更多信息,黑暗中的一个镜头就是您的控制器正在更新$scope
变量,但Angular并没有应用此更新。
尝试包装变量更新,如下所示:
$scope.$apply(function() {
$scope.numberToPrint = newNumber;
});
调用$scope.$apply
背后的基本思想是你必须手动哄骗Angular更新任何监听变量的绑定。虽然通常应该注意这一点,但可能发生的是,通过防止路径更改发生,您实际上并没有将Angular摘要化为新变量。