角服务在回调函数中部分可用
Angular service partially available in a callback function
在我的angular simple应用程序中,我遇到了一个工厂的问题,该工厂在回调函数中不完全可用。
这里有一个plnckr,它有一个应用程序的简化版本。
这是我的代码:
控制器:
function activate() {
return featureService.getBoards().then(callBackOk, callBackError);
function callBackOk(data) {
vm.boards = data;
};
function callBackError(error) {
console.log(error);
};
};
featureService:
function getBoards() {
return connectionService.get(urls.featureUrl).then(callBack, callBackError);
function callBack(response) {
boards = {};
actuators = [];
response.data.forEach(function(feature){
formatFeature(feature);
storeFeature(feature);
});
return boards;
}
function callBackError(error) {
var deferred = $q.defer();
console.log(angular.toJson(loginService.issue));
console.log(angular.toJson(loginService.isOk));
console.log(angular.toJson(loginService.error));
console.log(angular.toJson(loginService));
loginService.issue("Unable to retrieve objects", error).then(function(){
deferred.resolve(getBoards());
}, function(error){
deferred.reject(error);
});
return deferred.promise;
}
}
控制台日志:
undefined features.services.js:71:1
undefined features.services.js:72:1
{"label":"","detail":{}} features.services.js:73:1
{"error":{"label":"","detail":{}},"graphicDefered":{}} features.services.js:74:1
Error: loginService.issue(...) is undefined
callBackError@http://localhost:8100/app/features/features.services.js:76:17
最后,从loginService返回的对象:
return {
'login' : login,
'logout' : logout,
'isOk' : function(){return ok;},
'issue' : issue,
'error' : error,
'graphicDefered' : graphicDefered
};
我假设get
方法有一个异常,它将被callBackError
函数截获。我怀疑是懒惰的加载程序,但我不知道如何修复它…
undefined features.services.js:71:1
undefined features.services.js:72:1
这两个不定义是因为您在函数上调用angluar.toJson。只需尝试console.log(loginService.sissue),它就会打印出来。
函数issue仅在(detail.status==403 ||detail.status===401)为true时返回login(promise),否则返回undefined,并且您不能在未定义时调用它。
function issue(label, detail) {
error.label = label;
error.detail = detail;
if (detail.status === 403 || detail.status === 401) {
ok = false;
return login(account.mail, account.pwd);
}
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 比较从函数和生成的日期对象
- jQuery中是否内置了任何字符串格式化函数
- 当js函数's已执行