Javascript AngularJs:如何在两个作用域之间通信

Javascript AngularJs:如何在两个作用域之间通信,javascript,angularjs,twitter-bootstrap,Javascript,Angularjs,Twitter Bootstrap,我试着从中学习一个例子 使用AngularJS进行多语言支持。这个例子效果很好 我尝试另一种方法来实现这一点。我使用nginclude通过使用AngularJSnginclude来管理页眉、内容和页脚的模块分离 我的HTML结构如下所示: <div ng-include = "'header.html'"> </ div> <div ng-include = "'content.php'"> </ div> <div ng-include =

我试着从中学习一个例子 使用AngularJS进行多语言支持。这个例子效果很好

我尝试另一种方法来实现这一点。我使用
nginclude
通过使用AngularJS
nginclude
来管理页眉、内容和页脚的模块分离

我的HTML结构如下所示:

<div ng-include = "'header.html'"> </ div>
<div ng-include = "'content.php'"> </ div>
<div ng-include = "'footer.html'"> </ div>

我把我的工作保存在


我的问题是,当我尝试实现多语言时,将语言选择器放在
header.html
中,结果放在
content.php
上,它不起作用。

当模板创建模型时,它们在当前作用域上执行,而当前作用域不与控制器作用域共享(如前一个答案所述,ng include创建了一个新的子范围)。由于继承的工作方式,添加到此子范围的项对父(或同级)不可见

但是,如果您将项添加到父作用域中已经存在的项(google“点符号”),则这些添加将对父级和同级可见

一个很好的方法是使用控制器作为语法


app.controller('myController',['$scope','translationService',',
函数($scope,translationService){
//如果所选语言发生更改,请运行翻译
$scope.translate=函数(){
translationService.getTranslation($scope,$scope.vm.selectedLanguage);
};
//初始化
$scope.vm.selectedLanguage='en';
$scope.translate();
}]);

感谢您对脚本进行解释和修订,非常有帮助,非常有用。
<body ng-app="myApp" ng-controller="myController as vm">

    app.controller('myController',['$scope', 'translationService', 
function ($scope, translationService){  

  //Run translation if selected language changes
  $scope.translate = function(){
       translationService.getTranslation($scope, $scope.vm.selectedLanguage);
   };

   //Init
   $scope.vm.selectedLanguage = 'en';
   $scope.translate();

}]);