在我看來,我有一個登錄表單。提交後,我在控制器中定義的範圍內調用登錄方法。從這個方法中,我調用一個服務來完成實際的登錄過程。服務方法返回一個承諾。如何從控制器通知有關錯誤的視圖
angular.module('auth').service('authService', ['$q', function($q) {
this.login = function(credentials) {
var deferred = $q.defer();
// Do stuff and resolve or reject promise
return deferred.promise;
};
}]);
angular.module('auth').controller('authCtrl'), ['authService', function(authService) {
$scope.login = function() {
authService.login(credentials).then(
function(res) {
// Successfully logged in
},
function(res) {
// Report error to view
});
};
}]);
如何將我的錯誤(由承諾拒絕返回)傳遞給我的視圖?具體到我的表單的特定(或全部)輸入字段的ngModelController。
就像我在我的問題中說的,我真的很想利用實際的AngularJS驗證系統並將錯誤分配給ngModelController。使用您的方法,我無法將驗證錯誤添加到單個輸入字段,並且我還複製了現有功能(錯誤報告)。 – user3137652
在您提交/發佈表單之前,通常會進行驗證。這個想法是,如果表單無效,可以避免請求/響應。在我看來,你並沒有試圖驗證,而是顯示錯誤,如果出現錯誤的服務器端。如果你真的想使用驗證器,請看看使用控制器$ setValidity。 – Kevin
在提交表單之前,您無法驗證所有內容 - 有些驗證必須是服務器端。當請求失敗時,最好將錯誤狀態設置爲實際上錯誤的輸入字段。您在這裏描述的方法可能適用於一般錯誤消息,但不適用於特定輸入。此外,視覺錯誤指示(如引導程序'錯誤'類)不會附加到輸入。我如何使用$ setValidity,如果我無法訪問我的controllre中的ngModelController? – user3137652