return 一个承诺的异步验证器却得到了 'undefined' - 在 mddialog angular material 中
asynchronous validator to return a promise but got 'undefined' instead - inside mddialog angular material
我正在使用 Anggular Material mdDialog 在对话框中显示一个小窗体。
我正在调用指令 username-available 在其中进行异步验证。
dialog.tmpl.html:
<md-dialog aria-label="Save Scenario">
<form name="userForm" novalidate >
<input style="display:inline-block" name="Name" ng-model="SaveScenario.ScenarioName" ng-pattern="pattern"
required username-available ng-model-options="{ updateOn: 'blur' }">
</form>
</md-dialog>
app.js:
module.directive('usernameAvailable', function($timeout, $q,UserService) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attr, ngModel) {
ngModel.$asyncValidators.usernameExists = function(modelValue, viewValue) {
var currentValue = modelValue || viewValue;
UserService.checkifScenarioNameExists(currentValue)
.then(
function (d)
{
console.log("the data object from promise is", d.data);
if ( d.data == true)
{
console.log("username exists");
// deferred.resolve(d.data);
return $q.resolve(d.data);
}
else
{
console.log("username does not exist");
ngModel.$setValidity('usernameExists', false);
return $q.reject(d.data);
}
},
function (errResponse) {
console.error('The Promise was unsuccessfull');
}
);
};
}
}
});
这是我的对话框的样子并且还显示了错误:
我认为我在指令中返回承诺的语法是正确的。我不确定它是否与 md-dialog 有关。
有人可以帮忙解决为什么会出现此错误吗?
作为错误状态,expected asynchronous validator to return a promise
。在验证器内部,您错过了 UserService 使用前的 return 语句。
return UserService.checkifScenarioNameExists(currentValue).then(...)
我正在使用 Anggular Material mdDialog 在对话框中显示一个小窗体。 我正在调用指令 username-available 在其中进行异步验证。
dialog.tmpl.html:
<md-dialog aria-label="Save Scenario">
<form name="userForm" novalidate >
<input style="display:inline-block" name="Name" ng-model="SaveScenario.ScenarioName" ng-pattern="pattern"
required username-available ng-model-options="{ updateOn: 'blur' }">
</form>
</md-dialog>
app.js:
module.directive('usernameAvailable', function($timeout, $q,UserService) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attr, ngModel) {
ngModel.$asyncValidators.usernameExists = function(modelValue, viewValue) {
var currentValue = modelValue || viewValue;
UserService.checkifScenarioNameExists(currentValue)
.then(
function (d)
{
console.log("the data object from promise is", d.data);
if ( d.data == true)
{
console.log("username exists");
// deferred.resolve(d.data);
return $q.resolve(d.data);
}
else
{
console.log("username does not exist");
ngModel.$setValidity('usernameExists', false);
return $q.reject(d.data);
}
},
function (errResponse) {
console.error('The Promise was unsuccessfull');
}
);
};
}
}
});
这是我的对话框的样子并且还显示了错误:
我认为我在指令中返回承诺的语法是正确的。我不确定它是否与 md-dialog 有关。 有人可以帮忙解决为什么会出现此错误吗?
作为错误状态,expected asynchronous validator to return a promise
。在验证器内部,您错过了 UserService 使用前的 return 语句。
return UserService.checkifScenarioNameExists(currentValue).then(...)