我有一个有几条路线的角应用程序。在其中一个上有一个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中并且我仍然在应用程序中(但在不同的路径中),我可以通过任何方式获取渲染版本? (毕竟它的哈希标记视图和浏览器不应该在应用程序内刷新)
答案 0 :(得分:1)
如果我去另一条路线然后回来我在路线视图上所做的所有jQuery操作都被清除了,我需要重新做一遍吗?
是的:
每次当前路由更改时,包含的视图都会根据$ route服务的配置随之更改。 - ng-view docs
有没有办法在最后一个状态回到上一个路由(已经渲染了查询插件?
不使用正常的ng-view和路由。当您首次使用bxSlider离开路径时,ng-view中的DOM元素将替换为与新视图关联的DOM元素。
也许当您使用bxSlider离开视图时,您可以“jQuery移动”它到页面某处的某个隐藏DOM元素(例如,在某个页脚区域中),然后在您返回路径时将其移回。我认为最重要的是你必须在某处自己“缓存”它,并自己恢复它。将代码和数据包装在Angular服务中可能是最好的。