2 回答

TA贡献1799条经验 获得超6个赞
PullToRefresh具有destroy方法,可用于删除其实例。
在每个控制器中,您可以使用init()PullToRefresh,然后destroy()使用AngularJS$onDestroy()生命周期事件进行操作。这应避免在控制器Y中使用现有的PullToRefresh实例。
这有点hacky,也许有更好的方法,但是尝试一下,看看它是否有效。
控制器代码:
function myController() {
var self = this;
var pullToRefreshInstance = PullToRefresh.init({...});
self.$onDestroy = function() {
pullToRefreshInstance.destroy();
}
}

TA贡献1799条经验 获得超9个赞
使用@nevada_scout的使用destroy()方法的答案,我尝试自己解决了这个问题,幸运的是它起作用了。
if($rootScope.pullToRefreshInstance != undefined) {
$rootScope.pullToRefreshInstance.destroy();
$rootScope.pullToRefreshInstance = undefined;
}
$rootScope.pullToRefreshInstance = PullToRefresh.init({
mainElement: ('#page-refresher'),
onRefresh: function(){
//Perform your on refresh action here
},
distThreshold : 50,
setPassiveMode: true,
iconArrow: '<span class="la la-arrow-down"></span>',
instructionsPullToRefresh: "Pull Down to Refresh",
instructionsReleaseToRefresh: "Release to Refresh"
});
将init分配给rootscope可以完成这项工作(也可以用作服务)。然后,在控制器之间移动时,代码的前3行将检查是否存在任何先前启动的ptr。如果存在,它将销毁它并创建一个特定于当前控制器的新文件。
添加回答
举报