AngularJS:在pageload上执行指令的功能

AngularJS:在pageload上执行指令的功能,angularjs,angularjs-directive,angularjs-service,angular-translate,Angularjs,Angularjs Directive,Angularjs Service,Angular Translate,这是我处理爆米花的指令。我用不同的语言翻译文本: angular.module('c2gyoApp') .directive('tariffPopover', [ '$translate', '$rootScope', function ($translate, $rootScope) { return { restrict: 'A', transclude: true, scope: { translateText: '@tariffPopo

这是我处理爆米花的指令。我用不同的语言翻译文本:

angular.module('c2gyoApp')
  .directive('tariffPopover', [
    '$translate', 
    '$rootScope', 
    function ($translate, $rootScope) {
return {
  restrict: 'A',
  transclude: true,
  scope: {
    translateText: '@tariffPopover'
  },
  template:
    '<span ng-transclude></span>' +
    '&nbsp;' +
    '<span popover-placement="right" ' +
    '      uib-popover-html="text" ' +
    '      popover-trigger="mouseenter" ' +
    '      class="fa fa-info-circle">' +
    '</span>',
  controller: function ($scope) {
    $translate($scope.translateText).then(function (translatedText) {
      $scope.text = translatedText;
    });

    $rootScope.$on('$translateChangeSuccess', function () {
      $translate($scope.translateText).then(function (translatedText) {
        $scope.text = translatedText;
      });
    });

  }
};
}]);
有没有一种方法可以在pageload上执行翻译而无需代码复制?

尝试替换

$translateChangeSuccess

$locationChangeSuccess
使其在页面/位置更改时生效

此外,如果希望在加载页面中的内容后使用
$viewContentLoaded


希望这会有帮助

如果您只想避免复制粘贴,那么我认为将重复的代码包装到命名函数中,而不是使用匿名函数,是一种更好的面向对象实践。这样就可以重复使用

controller: function ($scope) {

  var translate = function(){
     $translate($scope.translateText).then(function (translatedText) {
         $scope.text = translatedText;
    });
  }

  $rootScope.$on('$translateChangeSuccess', translate);

  //execute the translation when the controller loads
  translate();
}

您能告诉我您在控制台中得到的错误吗?没有。看来,
$locationChangeSuccess
从未被解雇过。你能为同样的工作添加小提琴吗?这样我就可以看一看了。
controller: function ($scope) {

  var translate = function(){
     $translate($scope.translateText).then(function (translatedText) {
         $scope.text = translatedText;
    });
  }

  $rootScope.$on('$translateChangeSuccess', translate);

  //execute the translation when the controller loads
  translate();
}