javascript Angularjs回调服务(方法链接和自定义回调)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Angularjs回调服务(方法链接和自定义回调)相关的知识,希望对你有一定的参考价值。
/*global _, angular */
/*
function send() {
var cb = new Callback("custom");
SomeService.Send(cb.triggerSuccess, cb.triggerError, cb.triggerCustom);
return cb.remote();
}
send()
.success(function(data){})
.error(function(data){})
.custom(function(data){})
.complete(function(data){})
*/
angular.module('callbackServices', [])
.factory('Callback', function ($timeout){
return function(custom){
var successCallbacks = [];
var errorCallbacks = [];
function capitaliseFirstLetter(str) {
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}
function invokeCallbacks(callbacks, data) {
$timeout(function(){
_.chain(callbacks).compact().each(function(callback) { callback(data); });
}, 0);
}
var baseRemote = {
chain:function(callback){ return this.success(callback.triggerSuccess).error(callback.triggerError); },
success: function(callback) { successCallbacks.push(callback); return this; },
error: function(callback) { errorCallbacks.push(callback); return this; },
complete: function(callback) { return this.success(callback).error(callback); }
};
var base = {
triggerSuccess:function(response){
invokeCallbacks(successCallbacks, response);
return this;
},
triggerError:function(response) {
invokeCallbacks(errorCallbacks, response);
return this;
},
remote: function(){ return baseRemote; }
};
var customCallbacks = {};
function addCustomCallback(key){
customCallbacks[key] = [];
baseRemote[key] = function(callback) { customCallbacks[key].push(callback); return baseRemote; };
base["trigger" + capitaliseFirstLetter(key)] = function (response) { invokeCallbacks(customCallbacks[key], response); };
}
if(angular.isArray(custom)){
_.each(custom, addCustomCallback);
} else if( angular.isString(custom)){
addCustomCallback(custom);
}
return base;
};
});
以上是关于javascript Angularjs回调服务(方法链接和自定义回调)的主要内容,如果未能解决你的问题,请参考以下文章
回调范围未访问 AngularJS 服务中的函数
AngularJS 中的Promise --- $q服务详解
在 AngularJS 中设置 JSONP 回调函数
AngularJS - 动画回调/序列
AngularJs 中的两种方式数据绑定不使用异步回调
JavaScript 框架------------AngularJS(下)