Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t从angular translate获得$translate服务,以更改ngDropdowns的下拉列表_Javascript_Angularjs_Angular Translate - Fatal编程技术网

Javascript Can';t从angular translate获得$translate服务,以更改ngDropdowns的下拉列表

Javascript Can';t从angular translate获得$translate服务,以更改ngDropdowns的下拉列表,javascript,angularjs,angular-translate,Javascript,Angularjs,Angular Translate,angular translate正在更改我的HTML。我有一个NGDropDownButton指令的选择项数组,它也必须更改。更改语言后,我尝试使用translate.use()获取新的/当前的语言。有些东西坏了 这是HTML <div id="postBox" class="floatingSection" data-ng-controller="postButtonController2"> <button id="postButton" dropdown-menu=

angular translate正在更改我的HTML。我有一个NGDropDownButton指令的选择项数组,它也必须更改。更改语言后,我尝试使用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>

我是新来的,但是$translate服务不应该在控制器中工作吗。假设这是真的,那么必须改变什么才能使变化发生。我最近在HTML中为按钮添加了ng click,但它本身没有任何影响

我开始怀疑OP中倒数第二行没有执行。它执行前的行,执行后的行,但它周围的警报()是奇怪的。所以我把这一行放在函数中,它起作用了。这是经过修订的工作代码

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必须在函数内部,我仍然感到困惑。但它是有效的,而且非常简单。

我发现了一些小的进步。当$scope.getCurrenLanguage的3d代码行更改为$scope.getCurrentLanguage=function()时{,然后该函数中的所有代码行开始执行。但是,我还不清楚返回语句。问题没有解决,因为$scope.ddMenuOptions不起作用,但它是向前迈出的一步。有人能解释为什么从函数参数中删除$translate(仅在3d代码行中)允许这些有棱角的语句执行?这对我来说是个谜。
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
}]);