如何解决在配置阶段进行翻译使用angular-translate
是的,就像在EDIT中提到的那样:在标记中应用过滤器显然是最简单的解决方案。
除此之外,如果您真的想在配置阶段访问服务,请继续阅读:
在Angular <= 1.4中,这在技术上是不可能的。
从Angular v1.5(当前rc版本为1.5.0-rc.0)开始, , 似乎是可行的,因为config阶段应该是在服务之前进行配置的地方第一次重新使用。
这是使以下变为可能的更改(链接到github上的angular.js存储库)(仅允许装饰$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 Web应用程序的i18n部分,我想在配置阶段使用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’ 分配给我的 data.title
变量,然后在我的标记中使用 translate 指令对其进行 翻译 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。