角轉換允許,只要它滿足所需的接口,你可以使用任何服務作爲裝載機。但它並不限制你如何將其他參數傳遞給加載器。所以,你可以像你想要的那樣通過它們。
例如,您可以直接設置附加參數加載器。只實現制定者對他們在您的裝載機頂部:
module.factory('Loader', [
'$q',
function($q) {
var myParam;
var loader = function(options) {
var allParams = angular.extend({}, { myParam: myParam }, options);
var deferred = $q.defer();
// load stuff
return deferred.promise;
};
loader.setMyParam = function(param) {
myParam = param;
};
return loader;
}])
此外,您可以嘗試設置與一些輔助服務,這些參數(無論是同步或異步:
module.factory('SyncLoader', [
'$q', '$injector',
function($q, $injector) {
var loader = function(options) {
var helper = $injector.get(options.helper);
var myParam = helper.getMyParam();
var deferred = $q.defer();
// load stuff
return deferred.promise;
};
return loader;
}]);
或
module.factory('AsyncLoader', [
'$q', '$injector',
function($q, $injector) {
var loader = function(options) {
var helper = $injector.get(options.helper);
var deferred = $q.defer();
helper.getMyParam()
.then(function success(myParam) {
// load stuff
}, function error() {
// fail, probably
});
return deferred.promise;
};
return loader;
}]);
而且,有可能以某種方式使用事件。或者,也許,還有一些其他的方式成爲可能。這取決於具體的架構。