如何在angularjs中返回到先前的路径状态

时间:2013-01-02 13:20:26

标签: jquery angularjs

我有一个有几条路线的角应用程序。在其中一个上有一个jquery插件(bxslider),我正在viewContentLoaded上激活它。 如果我去一个不同的路线然后回来我在路径视图上所做的所有jQuery操作都被清除了,我需要重新做一遍吗?

有没有办法在最后一个状态回到上一个路由(已经渲染了查询插件?

angTestApp.controller('MyRouteCtrl', function($scope, $timeout) {
  $scope.readyFunction = function(e) {
    $timeout(function(){
      $('.slider').bxSlider();
    });
//

 }
$scope.$on('$viewContentLoaded', $scope.readyFunction);
});

每次调用路由MyRoute滑块重新渲染时,如果我之前已经在该URL中并且我仍然在应用程序中(但在不同的路径中),我可以通过任何方式获取渲染版本? (毕竟它的哈希标记视图和浏览器不应该在应用程序内刷新)

1 个答案:

答案 0 :(得分:1)

  

如果我去另一条路线然后回来我在路线视图上所做的所有jQuery操作都被清除了,我需要重新做一遍吗?

是的:

  

每次当前路由更改时,包含的视图都会根据$ route服务的配置随之更改。 - ng-view docs

  

有没有办法在最后一个状态回到上一个路由(已经渲染了查询插件?

不使用正常的ng-view和路由。当您首次使用bxSlider离开路径时,ng-view中的DOM元素将替换为与新视图关联的DOM元素。

也许当您使用bxSlider离开视图时,您可以“jQuery移动”它到页面某处的某个隐藏DOM元素(例如,在某个页脚区域中),然后在您返回路径时将其移回。我认为最重要的是你必须在某处自己“缓存”它,并自己恢复它。将代码和数据包装在Angular服务中可能是最好的。