2017-10-09 39 views
1

嘗試通過電子郵件重置密碼。單擊電子郵件中的重置鏈接並指向重置頁面後,控制檯可以輸出「$ scope.username」值,但是下一行會將錯誤顯示爲未定義的「用戶名」。 Error ScreenshotAngularjs屬性在控制器中未定義

不知道哪裏出錯了。謝謝。

.controller('resetCtrl', function(User, $routeParams, $scope, $timeout, $location) { 

    app = this; 
    app.hide = true; 

    User.resetUser($routeParams.token).then(function(data) { 
     if (data.data.success) { 
      app.hide = false; 
      app.successMsg = 'Please enter a new password'; 
      $scope.username = data.data.user.username; 
     } else { 
      app.errorMsg = data.data.message; 
     } 
    }); 

    app.savePassword = function(regData, valid, confirmed) { 
     app.errorMsg = false; 
     app.disabled = true; 
     app.loading = true; 
     console.log($scope.username); // test output 
     app.regData.username = $scope.username; 
      User.savePassword(app.regData).then(function(data) { 
       app.loading = false; 
       if (data.data.success) { 
        app.successMsg = data.data.message + '...Redirecting'; 
        $timeout(function() { 
         $location.path('/login'); 
        }, 2000); 
       } else { 
        app.disabled = false; 
        app.errorMsg = data.data.message; 
       } 
      }); 
     } 
}); 

回答

1

聲明$scope.username外,將解決你的問題,因爲你使用的控制器語法,最好是把它作爲app.username。

.controller('resetCtrl', function(User, $routeParams, $scope, $timeout, $location) { 

    app = this; 
    app.hide = true; 
    app.username = ''; 
    User.resetUser($routeParams.token).then(function(data) { 
     if (data.data.success) { 
      app.hide = false; 
      app.successMsg = 'Please enter a new password'; 
      app.username = data.data.user.username; 
     } else { 
      app.errorMsg = data.data.message; 
     } 
    }); 

    app.savePassword = function(regData, valid, confirmed) { 
     app.errorMsg = false; 
     app.disabled = true; 
     app.loading = true; 

     app.regData.username = app.username; 
      User.savePassword(app.regData).then(function(data) { 
       app.loading = false; 
       if (data.data.success) { 
        app.successMsg = data.data.message + '...Redirecting'; 
        $timeout(function() { 
         $location.path('/login'); 
        }, 2000); 
       } else { 
        app.disabled = false; 
        app.errorMsg = data.data.message; 
       } 
      }); 
     } 
}); 
+0

謝謝Sajeetharan。但是,儘管控制檯能夠在錯誤前一行輸出「app.username」的值,但問題仍然存在。 – neo

+0

你是什麼意思 – Sajeetharan

+0

對不起,我沒有意識到我可以通過編輯問題來插入屏幕截圖。所以我使用了console.log()函數來查看該值是否已經傳遞給變量,實際上它的確如屏幕截圖一樣代碼和我的代碼。但是當我想使用它時,下一行顯示未定義。 – neo