0

我有一个带有几条路线的角度应用程序。其中一个是我在viewContentLoaded 上激活的jquery 插件(bxslider)。如果我走另一条路线然后回来,我在路线视图上所做的所有 jQuery 操作都被清除了,我需要再做一次吗?

有没有办法回到上一个状态的上一个路由(查询插件已经呈现?

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

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

每次调用路由 MyRoute 时,滑块都会重新渲染,如果我之前已经在该 URL 中并且我目前仍在应用程序中(但在不同的路由中),有什么方法可以获得渲染的版本?(毕竟它是一个哈希标签视图,浏览器不应该在应用程序内刷新)

4

1 回答 1

1

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

是的:

每次当前路由变化时,包含的视图都会根据 $route 服务的配置而变化。-- ng-查看文档

.

有没有办法回到上一个状态的上一个路由(查询插件已经呈现?

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

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

于 2013-01-03T17:29:26.600 回答