저는 차트 작성을 위해 angularJS 기반 도구에서 작업 중이며 사용자가 덮어 쓸 수있는 구성 시스템을 만들고 싶습니다. 즉, 기본값은 하나의 구성 파일에서로드됩니다. 다른 설정 파일이 존재하면 무시됩니다.AngularJS에서 사용자 덮어 쓰기 설정 시스템 만들기
는 여기에 지금까지이 작업은 다음과 같습니다
angular.module('axisJSApp')
.provider('configProvider', function() {
this.$get = function axisJSConfig($http, $q) {
var defaultConfig = $http.get('default.config.yaml');
var userConfig = $http.get('config.yaml');
return $q.all([defaultConfig, userConfig]).then(function(values){
var defaultConfigYaml = jsyaml.safeLoad(values[0].data);
var userConfigYaml = jsyaml.safeLoad(values[1].data);
return angular.extend(defaultConfigYaml, userConfigYaml);
});
};
});
그럼 내 컨트롤러 :
angular.module('axisJSApp')
.controller('MainCtrl', function (configProvider, $scope) {
configProvider.then(function(appConfig){
console.dir(appConfig); // Config loaded, everything else happens.
});
});
이 default.config.yaml 및 config.yaml 모두에 해당되면 모두 잘 작동합니다. 내 질문은 config.yaml
이없는 경우 어떻게 $ q.all()이 정상적으로 실패하게합니까??
또한, 전체 컨트롤러를 .then()
에 래핑 할 필요가 없도록 구성 파일을 동 기적으로로드하는 방법이 있습니까?
감사합니다. 정상적으로 config.yaml
의 비 존재를 처리하기 위해 내가 생각할 수있는
모두 유용합니다. ngRoute를 사용하는 것은 흥미로운 생각이며, 고려하지 않았습니다. 고맙습니다! – aendrew