Что мне нужно знать, как я могу использовать такую услугу, как $ http вне функции $ get, или это даже возможно? Мой код идет и загружает json-файл, который предоставляет словарь, который мое приложение использует по-разному. Я хочу, чтобы пользователи могли настраивать этот словарь, поэтому я использую метод расширения jquery, чтобы пользователи могли добавлять значения к объекту и расширять словарь. Метод экземпляра в коде ниже обрабатывает все это. То, что я хотел бы быть в состоянии сделать это настроить свою службу как такНастройка службы, которая зависит от другой службы angularjs
config(['_sys_dictionaryProvider', function(_sys_dictionaryProvider) {
_sys_dictionaryProvider.instansiate('config/dictionary/custom/dictionary.json');
}])
Но это требует $http
услуг должны быть доступны во время конфигурации, и я не думаю, что это. Если я положу услугу $http
как часть свойства $ get, он будет работать, как объясняется here, за исключением того, что сеть должна запрашиваться каждый раз, когда используется служба. Есть ли способ использовать службу в конфигурации другой службы?
Полный код ниже, дайте мне знать, если мне нужно уточнить.
app.provider("_sys_dictionary", ['$http',
function ($http) {
var dictionary,
DictionaryService = function() {
this.definitions = dictionary;
this.define = function (what) {
var definitions = this.definitions;
if (what instanceof Array) {
for (var i = 0; i < what.length; i++) {
definitions = definitions[what[i]];
}
return definitions;
}
return this.definitions[what];
};
};
return {
$get: function() {
return new DictionaryService();
},
instansiate: function (path) {
$http.get('config/dictionary/dictionary.json').success(function (data) {
dictionary = data;
$http.get(path).success(function (data) {
jQuery.extend(true, dictionary, data)
});
});
}
};
}
]);