【发布时间】:2015-09-16 21:05:56
【问题描述】:
我正在研究一个角度指令,它实现了一个解析器,通过点击服务器来验证当前输入,服务器返回一个 true/false 状态,我必须使用它:
- 使模型无效
- 模型值无效时设置为“未定义”
我已经通过使用$setValidity完成了上面的1.但是在2.因为我需要使用服务器返回的状态给$parser函数,但是由于我必须等待服务器响应,所以返回语句内部回调没有用。
app.directive('testDir', ['$resource',function($resource){
return{
restrict:'A',
require:'ngModel',
scope:{},
link:function(scope,element, attr,ngModel){
ngModel.$parsers.push(function (inputValue) {
var req=$resource('data.json');
var modelval='123';
req.get({},function(result){
ngModel.$setValidity('id',result.status);
//ngModel.$setViewValue(result.name);
console.log(result.name);
modelval=result.status?inputValue:undefined;
return modelval; // this doesn't work
});
return modelval; // executes before reading the JSON so always '123'
});
}
};
我觉得我缺少一些非常基本的 JS,因为我们无法从函数内部返回到外部函数,但无法找到解决方案。
非常感谢任何帮助!
【问题讨论】:
标签: javascript angularjs angular-resource angular-directive