在配置阶段进行翻译(使用 angular-translate)
Translating during config phase (using angular-translate)
我正在开发我的 Angular 网络应用程序的国际化部分,我想在我的配置阶段使用 angular-translate。
我定义了一些我想翻译的数据:
.state('app.tracking', {
url: '/:IdentityIdentifier',
params:{
IdentityIdentifier: {squash: false, value: null}
},
templateUrl: 'views/pages/tracking.html',
data : { title: $filter('translate')('tracking.tracking.TITLE') },
resolve: load([], function(){ return loadGoogleMaps(); })
})
这是我的配置声明:
.config(
[ '$stateProvider', '$urlRouterProvider', '$locationProvider', 'MODULE_CONFIG', '$httpProvider', '$filter',
function ($stateProvider, $urlRouterProvider, $locationProvider, MODULE_CONFIG, $httpProvider, $filter) {
我得到的错误是经典的:错误:[$injector:unpr] 未知提供者:$filter
我知道我不能在配置阶段使用服务,只能使用提供商,但是我的问题有解决方案吗?
编辑: 通过将密钥 'tracking.tracking.TITLE' 分配给我的 [= 我的问题已经解决36=] 变量,然后在我的标记中使用 translate 指令翻译它。
是的,就像问题的编辑中提到的:在标记中应用过滤器显然是最简单的解决方案。
除此之外,如果真的想在配置阶段访问服务,请继续阅读:
技术上在 Angular <= 1.4 中是不可能的。
从Angularv1.5开始(目前的rc版本是1.5.0-rc.0)似乎可以,虽然我不建议这样做,因为配置阶段应该只是在首次使用服务之前配置服务的地方。
This is the change that made the following possible (link to angular.js repo at github)(它只是为了允许装饰$injector
)。
现在,举个例子:
http://codepen.io/NicBright/pen/PZJBPP?editors=101
JS部分:
(function() {
var result;
angular.module('myApp', [])
.config(function($injectorProvider) {
result = $injectorProvider.$get().get('myService').getSomething();
})
.factory('myService', function() {
return { getSomething: function() { return 'it works!'; }}
})
.controller("MainCtrl", function($scope) {
$scope.result = result;
})
})();
HTML部分:
<div ng-app="myApp" ng-controller="MainCtrl">
result: {{ result }}
</div>
我正在开发我的 Angular 网络应用程序的国际化部分,我想在我的配置阶段使用 angular-translate。
我定义了一些我想翻译的数据:
.state('app.tracking', {
url: '/:IdentityIdentifier',
params:{
IdentityIdentifier: {squash: false, value: null}
},
templateUrl: 'views/pages/tracking.html',
data : { title: $filter('translate')('tracking.tracking.TITLE') },
resolve: load([], function(){ return loadGoogleMaps(); })
})
这是我的配置声明:
.config(
[ '$stateProvider', '$urlRouterProvider', '$locationProvider', 'MODULE_CONFIG', '$httpProvider', '$filter',
function ($stateProvider, $urlRouterProvider, $locationProvider, MODULE_CONFIG, $httpProvider, $filter) {
我得到的错误是经典的:错误:[$injector:unpr] 未知提供者:$filter
我知道我不能在配置阶段使用服务,只能使用提供商,但是我的问题有解决方案吗?
编辑: 通过将密钥 'tracking.tracking.TITLE' 分配给我的 [= 我的问题已经解决36=] 变量,然后在我的标记中使用 translate 指令翻译它。
是的,就像问题的编辑中提到的:在标记中应用过滤器显然是最简单的解决方案。
除此之外,如果真的想在配置阶段访问服务,请继续阅读:
技术上在 Angular <= 1.4 中是不可能的。
从Angularv1.5开始(目前的rc版本是1.5.0-rc.0)似乎可以,虽然我不建议这样做,因为配置阶段应该只是在首次使用服务之前配置服务的地方。
This is the change that made the following possible (link to angular.js repo at github)(它只是为了允许装饰$injector
)。
现在,举个例子: http://codepen.io/NicBright/pen/PZJBPP?editors=101
JS部分:
(function() {
var result;
angular.module('myApp', [])
.config(function($injectorProvider) {
result = $injectorProvider.$get().get('myService').getSomething();
})
.factory('myService', function() {
return { getSomething: function() { return 'it works!'; }}
})
.controller("MainCtrl", function($scope) {
$scope.result = result;
})
})();
HTML部分:
<div ng-app="myApp" ng-controller="MainCtrl">
result: {{ result }}
</div>