angular-translate - StaticFilesLoader - 动态传递前缀路径
angular-translate - StaticFilesLoader - passing prefix path dynamically
我是 angularjs 的新手并且能够成功设置 angular-translate。但是我想动态传递前缀路径。例如。在下面的代码片段中,我想动态传递国家名称。这应该如何实现?请提出建议。
$translateProvider.useStaticFilesLoader({
prefix: '../translate/uk/',
suffix: '.json'
});
好吧,我终于找到了解决办法。创建了一个自定义加载器,如下所示:
app.factory('customLoader',
function ($http, $q, $timeout, $rootScope) {
return function (options) {
var deferred = $q.defer();
var filename = $rootScope.name;
console.log('../translate/' + filename + '/' + options.key + '.json');
$http({
method:'GET',
url: '../translate/' + filename + '/' + options.key + '.json'
}).success(function (data) {
deferred.resolve(data);
}).error(function () {
deferred.reject(options.key);
});
$timeout(function (data) {
deferred.resolve(data);
}, 2000);
return deferred.promise;
}
})
在app.config部分配置如下:
$translateProvider.useLoader('customLoader', {});
并设置来自控制器的文件名(路径)如下:
$rootScope.name = $scope.country;
我是 angularjs 的新手并且能够成功设置 angular-translate。但是我想动态传递前缀路径。例如。在下面的代码片段中,我想动态传递国家名称。这应该如何实现?请提出建议。
$translateProvider.useStaticFilesLoader({
prefix: '../translate/uk/',
suffix: '.json'
});
好吧,我终于找到了解决办法。创建了一个自定义加载器,如下所示:
app.factory('customLoader',
function ($http, $q, $timeout, $rootScope) {
return function (options) {
var deferred = $q.defer();
var filename = $rootScope.name;
console.log('../translate/' + filename + '/' + options.key + '.json');
$http({
method:'GET',
url: '../translate/' + filename + '/' + options.key + '.json'
}).success(function (data) {
deferred.resolve(data);
}).error(function () {
deferred.reject(options.key);
});
$timeout(function (data) {
deferred.resolve(data);
}, 2000);
return deferred.promise;
}
})
在app.config部分配置如下:
$translateProvider.useLoader('customLoader', {});
并设置来自控制器的文件名(路径)如下:
$rootScope.name = $scope.country;