Javascript AngularJs:如何在两个作用域之间通信
我试着从中学习一个例子 使用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 =
nginclude
通过使用AngularJSnginclude
来管理页眉、内容和页脚的模块分离
我的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();
}]);