리소스 파일이 가끔 읽히고 때로는 정의되지 않고 모든 응용 프로그램이 충돌합니다. 왜 가끔씩 만 작동하는지 모르겠고 해결책을 찾아 내는데 어려움을 겪고 있습니다. 때때로 작동,범위에서 리소스 파일이 정의되지 않았습니다.
'use strict';
app.factory('appResourcesService', ['$resource', function ($resource) {
var appResourcesServiceFactory = {};
appResourcesServiceFactory.getResources = function ($scope, language, locale) {
var languageFilePath = 'resources/AppResources.json';
$resource(languageFilePath).get().$promise.then(function (data) {
$scope.appResources = data;
}, function (reason) {
var defaultLanguageFilePath = 'resources/AppResources.json';
$resource(defaultLanguageFilePath).get(function (data) {
$scope.appResources = data;
});
});
};
return appResourcesServiceFactory;
}]);
내가 말했듯이 :
app.controller('CommonController', ['$scope', '$location', 'appResourcesService',
function ($scope, $location, appResourcesService)
그리고 resoruces을 읽을 수있는 서비스 다음과 같다 : 내 컨트롤러에 나는 내가 appResourcesService
입니다 파일을 읽기 위해 만든 서비스를 전달하고있다 어떤 종류의 문제도없이 컨트롤러에서 코드 $scope.appResources
에 도달하면 appResources는 정의되지 않습니다. 파일을 읽기 전에 파일에 도달했기 때문에 파일을 읽지는 못했지만 파일을 읽지 못하는 해결책을 찾을 수 없다고 생각합니다.
질문에 대한 답변이 없으면 신청서에 심각한 문제가 있음을 확인했습니다. 이 서비스는 귀하의 범위를 알지 못합니다. 범위를 관리하는 것은 그의 책임이 아닙니다. 범위는 컨트롤러와 뷰에 의해 인식됩니다. 서비스는 컨트롤러에 의해 호출되어야하고 데이터가 반환되어야합니다. 비동기라면 약속입니다. 이것은 서비스에서 데이터를 가져 와서 처리하고 범위에 주입하는 컨트롤러입니다. – Techniv
당신의 문제는 분명히이 나쁜 디자인과 관련이 있습니다. 당신의 서비스가 약속을 지키지 않기 때문에'$ resource (languageFilePath) .get()'이 해결되기 전에 당신이 아마 $ scope.appResources에 접근하려한다고 가정합니다. – Techniv
@Techniv 나는 그것이 명백하게 나쁜 디자인을 가지고 있으며, 그것은 분명히 문제라고 동의한다. 따라서 내 서비스가 약속을 반환해야하고 내 컨트롤러 내부에서 해당 기능을 반환으로 호출해야합니다. –