我正在尝试使用此处https://ourcodeworld.com/articles/read/127/how-to-implement-a-pull-to-update-effect-android-refresh-style-with-javascript中的资源将刷新刷新模块实现到我的AngularJS应用程序中
到目前为止,我将代码粘贴到控制器中,说X。
PullToRefresh.init({
mainElement: ('#page-refresher'),
onRefresh: function(){
$scope.tasks();
},
distThreshold : 50, // Minimum distance required to trigger the refresh.
iconArrow: '<span class="la la-arrow-down"></span>', // The icon for both instructionsPullToRefresh and instructionsReleaseToRefresh
instructionsPullToRefresh: "Pull Down to Refresh",
instructionsReleaseToRefresh: "Release to Refresh"
});
上面的代码获取task()。直到这里都没有问题。
之后,我将相同的代码粘贴到另一个控制器中,例如Y。
PullToRefresh.init({
mainElement: ('#page-refresher'),
onRefresh: function(){
$scope.history();
},
distThreshold : 50, // Minimum distance required to trigger the refresh.
iconArrow: '<span class="la la-arrow-down"></span>', // The icon for both instructionsPullToRefresh and instructionsReleaseToRefresh
instructionsPullToRefresh: "Pull Down to Refresh",
instructionsReleaseToRefresh: "Release to Refresh"
});
现在,每当我尝试拉出控制器X的页面时,pulltorefresh函数都会起作用,并会提取task()。然后,如果我移到另一页的控制器Y并pulltorefresh,则在这里执行,而不是执行history();之前的task()被执行。我知道这不是在AngularJS中实现JS函数的方法。有人指导如何在执行不同操作的多个控制器中实现“刷新刷新”模块的正确方法。
最佳答案
PullToRefresh具有destroy方法,可用于删除其实例。
在每个控制器中,您可以init()
PullToRefresh,然后使用AngularJS destroy()
生命周期事件将其$onDestroy()
。这应防止在控制器Y中使用现有的PullToRefresh实例。
这有点hacky,也许有更好的方法,但是尝试一下,看看是否可行。
控制器代码:
function myController() {
var self = this;
var pullToRefreshInstance = PullToRefresh.init({...});
self.$onDestroy = function() {
pullToRefreshInstance.destroy();
}
}
关于javascript - 在Angularjs中实现JS Pulltorefresh的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55655575/