1

アプリでポップアップを表示するためにangular-sweetaler libを使用しています。

function _changeEmailAddress() {
         sweet.show({
             title: "Change Email Address",
             text: "Write your email address:",
             type: "input",
             showCancelButton: true,
             closeOnConfirm: false,
             animation: "slide-from-top",
             inputPlaceholder: 'Enter e mail address'
         },
           function (inputValue) {
               if (inputValue === false) return false; if (inputValue === "") {
                   sweet.showInputError("You need to write Email address!"); return false
               }

               at.user.email = inputValue;
               var ret = userProfileFactory.updateUserEmailAddress(at.user)
                   .success(function (data) {
                       sweet.show("Accepted!", "You wrote: " + inputValue, "success");
                       at.user.pendingEmailVerification = true;
                   })
               .error(function (err) {
                   sweet.showInputError("You need to write proper Email address!"); return false
               });
           }); 
     }

ここにビューがあります:

 <button class="btn btn-default" ng-click="at.changeEmailAddress()">Change</button>

私が直面している問題は、changeEmailAddress関数を呼び出すたびに、入力してから[OK]を押すことです。それは関数(入力)に入り、ユーザーが入力した「at.user.email」の値を変更します。

バックエンドで変更されますが、ビューでは更新されません。もう一度クリックすると、ビューが更新されます。

John Papa ブログが彼のブログで述べたように、私は $scope、$rootScope を使用していません 。しかし、ngDialog や SweetAlert タイプのサービスを呼び出す際の解決方法については言及していませんでした。

ビューを更新してモデルの最新の変更を表示する方法を教えてください。

よろしくお願いします。

4

1 に答える 1

2

angularでsweetalertを使用すると、同じ問題が発生しました。私が見つけた解決策は、次のように呼び出すことでした:

$scope.$apply();

DOM を更新した後。

このソリューションの詳細な説明については、http://nathanleclaire.com/blog/2014/01/31/banging-your-head-against-an-angularjs-issue-try-this/にアクセスしてください。

于 2016-05-25T15:29:07.150 に答える