2013-08-20 101 views
0

最近我遇到了一个问题,我需要更新页面使用角度,更新网址,但不重新加载页面。困惑?让我进一步解释。我有一张数据表(使用ng-grid),我想要它,所以当我点击第1行时,angular打印出一个,并在不重新加载页面的情况下将URL更改为'currentUrl/1'。然后我点击第4行,打印出4,并将网址更改为'currentUrl/4'。这是可能的角度来做到这一点。为了使我的页面不会重新加载每次单击某一行的时候,我把下面的Angularjs/Javascript不要刷新页面,但更改网址和更新屏幕

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

它做我想要的一切,改变网址,网页不刷新,但现在的角度没有更新这个数字。我究竟做错了什么?

+0

检查:https://github.com/angular-ui/ui-router –

+0

谢谢,但我期待的修复必须是稳定的,并且在文档中,它说,它不是。 –

回答

0

这将有助于查看打印出数字的代码部分,但是您更改URL而不更新路由的代码看起来很好。

没有更多信息,在黑暗中拍摄的是您的控制器正在更新$scope变量,但此更新没有被Angular应用。

尝试包裹变量更新,像这样:

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

背后呼唤$scope.$apply的基本想法是,你必须手动哄角到更新听变量的任何绑定。虽然这通常应该被照顾,但可能发生的情况是,通过防止发生路由变化,您实际上并没有使用Angular消化新变量。

Here is an article which can explain $apply better.

+0

因为我不完全了解发生了什么,所以我无法提供工作示例代码。但是,$ scope。$ apply不起作用,因为'$ digest已在进行中'错误。我认为,当我使用locationChangeSuccess运行我的应用程序时,它不会运行我的$ watch功能(下一个评论),但是当我将程序中的位置信息注释掉时,它会运行$ watch函数(将console.log那里)。这是可能的信息吗? –

+0

$ scope。$ watch(function(){return selectedPartFactory.part.id},function(n){$ http.get(afHttp.baseUrl +“/”+ $ scope.grid.name +“/”+ n ) .success(功能(数据){ //$log.log($scope.grid.name); $ scope.grid.data =数据; }) ; }); –