资源文件在范围内未定义
Resource file is undefined on scope
我有一个资源文件有时被读取,有时未定义并导致所有应用程序崩溃。我不知道为什么它有时只起作用,这让我很难找到解决方案。在我的控制器上,我正在传递我创建的服务来读取 appResourcesService
:
的文件
app.controller('CommonController', ['$scope', '$location', 'appResourcesService',
function ($scope, $location, appResourcesService)
读取资源的服务如下:
'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;
}]);
就像我说的,有时它没有任何问题,但有时当我在控制器中到达片段 eof 代码 $scope.appResources
时,appResources 是未定义的。我认为这可能是因为它在读取文件之前到达那里,但我无法找到避免它的解决方案。
你们工厂应该return一个承诺。
处理数据是控制器的工作。 (我使用 $http 因为它更干净)
app.factory('appResourcesService', ['$http', function($http) {
var appResourcesServiceFactory = {};
appResourcesServiceFactory.getResources = function () {
var languageFilePath = 'resources/AppResources.json';
return $http.get(languageFilePath).then(function(response) {
return response.data;
});
)};
return appResourcesServiceFactory;
}]);
您使用 .then 解决控制器内部的承诺以获取数据并设置您的范围。
appResourcesServiceFactory.getResources().then(function(data) {
$scope.appResources = data;
})
我有一个资源文件有时被读取,有时未定义并导致所有应用程序崩溃。我不知道为什么它有时只起作用,这让我很难找到解决方案。在我的控制器上,我正在传递我创建的服务来读取 appResourcesService
:
app.controller('CommonController', ['$scope', '$location', 'appResourcesService',
function ($scope, $location, appResourcesService)
读取资源的服务如下:
'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;
}]);
就像我说的,有时它没有任何问题,但有时当我在控制器中到达片段 eof 代码 $scope.appResources
时,appResources 是未定义的。我认为这可能是因为它在读取文件之前到达那里,但我无法找到避免它的解决方案。
你们工厂应该return一个承诺。 处理数据是控制器的工作。 (我使用 $http 因为它更干净)
app.factory('appResourcesService', ['$http', function($http) {
var appResourcesServiceFactory = {};
appResourcesServiceFactory.getResources = function () {
var languageFilePath = 'resources/AppResources.json';
return $http.get(languageFilePath).then(function(response) {
return response.data;
});
)};
return appResourcesServiceFactory;
}]);
您使用 .then 解决控制器内部的承诺以获取数据并设置您的范围。
appResourcesServiceFactory.getResources().then(function(data) {
$scope.appResources = data;
})