可以't从angular translate获得$translate服务以更改ngDropdowns的下拉数组
Can't get $translate service from angular-translate to change dropdown array for ngDropdowns
angular translate正在更改我的HTML。我有一个ngDropdown按钮指令的选择项数组,它也必须更改。在更改语言后,我尝试使用translate.use()获得新的/当前的语言。有些东西不起作用。
这是HTML
<div id="postBox" class="floatingSection" data-ng-controller="postButtonController2">
<button id="postButton" dropdown-menu="ddMenuOptions" dropdown-model="ddMenuSelected" class="btn-menu" ng-click="getCurrentLanguage()">{{ 'POST' | translate }}</button>
</div>
这是那个postButton的控制器。它应该从$translate中获取新的/当前的语言,并使用该字符串来获取下拉选择数组ddSelections.withLangChoice$scope.getCurrentLanguage在硬编码时选择正确的数组,但在从$translation中获取语言字符串的变量时不选择。
这是带有下拉菜单的按钮的控制器。评论在几行中描述了有效的东西和无效的东西。
residenceApp.controller('postButtonController2', ['$translate', '$scope', 'changePostDdFactory',
function ( $translate, $scope, ddSelections ){
//ddSelections is the result object from the function returned by changePostDdFactory
$scope.getCurrentLanguage = function( $translate ){
alert('here I am in postButtonController2'); //fires on post button clicks and on page load
alert('here I am in postButtonController2' + $translate.use()); //does not fire on post button clicks. fires on page load
$scope.langKey=$translate.use(); //gets langKey in $translate on page load only
$translate.refresh($scope.langKey);//should refresh the translation, but nothing
alert('from postButtonController2 - currentLanguage is' + ' ' + $translate.use() ); //does not fire on button click. fires on page load
//return 'es'; //hardcoded works on page load & sets ddSelections.withLangChoice to es array
return $translate.use(); //sets language for ddSelections on page load, no language changes
};
$scope.ddMenuOptions = ddSelections.withLangChoice($scope.getCurrentLanguage($translate)); //works on page load, no language change occurs
$scope.ddMenuSelected = {};
//working code to watch for change from user selection
}]);
我是新手,但不应该$translate服务在控制器中工作。假设这是真的,什么必须改变才能发生改变。我最近在HTML中为按钮添加了ng-click,但它本身没有任何影响。
我开始怀疑OP中从2d到最后一行没有执行。它执行之前的行,执行之后的行,但它周围的alerts()很奇怪。所以我把这条线放在函数里面,它就起作用了。这是修订后的工作规范。
residenceApp.controller('postButtonController2', ['$translate', '$scope', 'changePostDdFactory',
function ( $translate, $scope, ddSelections ){
var ddSelections;
//ddSelections is the result object from the function returned by changePostDdFactory
$scope.getCurrentLanguage = function(){
$scope.langKey=$translate.use(); //use() as a getter
$scope.ddMenuOptions = ddSelections.withLangChoice($scope.langKey);
return;
};
$scope.ddMenuSelected = {};
//code to watch for change from user selection
}]);
我仍然困惑于为什么$scope.getCurrentLanguage只能作为匿名函数工作,以及为什么$scope.ddMenuOptions必须在函数内部。但它是有效的,而且非常简单。
相关文章:
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- AngularJS无法使用translate值正确翻译
- JQuery在类中设置CSS Transform、Translate属性
- 如何加载JSON数组以使用Angular-Translate翻译AngularJS网页
- AngularJS translate & ui tooltip html
- AngularJS translate table
- 如何使用css translate实现平移
- 使用AngularJS和Angular Translate如何检查字符串是否已被翻译
- 如何在Zend Framework中使用javascript文件中的translate
- 使用Angular translate设置参数格式
- 在 ui-router 配置文件中使用 angular-translate 的 $translate.use()
- 在HTML5画布中,translate()和moveTo()javascript函数有什么区别
- 如何更改转换:当滚动浏览网站时元素的translate()位置
- 使用 Google Translate API 翻译 JavaScript 和 HTML 中的内容
- HTML5 Canvas .translate 和 .scale 会导致图像边缘出现锯齿状
- 角度翻译 UTF8 字符 (pascalprecht.translate).
- 相当于fabric.js中的ctx.translate
- 当以translate为中心时,语气模糊的文本(-50%,-50%);
- 如何使用angular translate从HTML中的函数获取翻译ID