jquerymobile应用程序中的加载程序

时间:2014-01-14 20:24:46

标签: jquery-mobile

我知道在jquerymobile应用程序中,如果我们使用pagebeforeshow页面事件,那里面的所有事件都会执行多次。我找到了解决方案,即:在隐藏页面时取消绑定事件,并在显示页面时绑定事件。但是代码是什么,它不在任何函数内部,或者每次访问页面时都必须执行而没有任何事件(如点击,点击,绑定,聚焦等)。
代码:

    $(document).on( 'pagebeforeshow', '#profile', function(event){

    //call to fetch user data
    //first part        

             var invocationData6 = {
                        adapter : 'registerUser',
                        procedure : 'fetchUserProfileData',
                        parameters : [profileId]
                };

                WL.Client.invokeProcedure(invocationData6, {
                    onSuccess : fetchSuccess,
                    onFailure : fetchFailure,
                });


            function fetchSuccess(result){
                 $.mobile.utils.hideWaitBox();
                var invocationResult = result.invocationResult;
                var array1 = invocationResult.array;

            }

            function fetchFailure(result){
                $.mobile.utils.hideWaitBox();
                WL.Logger.error('Fetch Unsuccessful');
            }

//second part
             $(document).undelegate('#updBtn1', 'click').delegate('#updBtn1', 'click', function() {
                var newAge = $("#updAge").val();
                var newPhone = $("#updPhone").val();
                var newSmoker = $("#flip-9").val();
                $.mobile.utils.showWaitBox("e", "Wait! Updating your Info...");
                        var invocationData7 = {
                                adapter : 'registerUser',
                                procedure : 'updateRegisterData',
                                parameters : [profileId, newAge, newPhone, newSmoker]
                        };

                        WL.Client.invokeProcedure(invocationData7, {
                            onSuccess : update1Success,
                            onFailure : update1Failure,
                        });


                    function update1Success(result){
                         $.mobile.utils.hideWaitBox();

                    }

                    function update1Failure(result){
                         $.mobile.utils.hideWaitBox();

                    }

            });



     });

正如您在代码中看到的那样,第一部分未包含在任何内容中,因此无法绑定或取消绑定以防止它在pagebeforeshow页面事件中多次执行。但是通过使用delegate和undelegate事件可以很容易地防止第二部分出现此问题。
那么,如何防止第一部分多次执行。我无法将其括起来,因为当使用$ .mobile.changePage更改页面时必须执行它。

0 个答案:

没有答案