我正在尝试使用此处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/

10-09 05:05