![](/img/trans.png)
[英]In angular js, How do I pass data from a parent controller to a child controller?
[英]Angular JS parent controller unable to pass alone variables to child controller
我想在2個不同的控制器之間共享兩個變量,一個嵌套在另一個控制器中:
方法1:
<body ng-controller="WGHomeLanCtrl">
<section><div><a>{{text}}</a></div></section>
<section>...</section>
<section ng-controller="WGHomeSurveyCtrl"> <div> <a>{{lan}} and {{lan2}}</a></div></section>
在我的控制器文件中,我有:
var HomeControllers = angular.module('HomeControllers', []);
HomeControllers.controller('WGHomeLanCtrl', function($scope, $http) {
$scope.lan = "en";
$http.get("lan/lan_".concat($scope.lan, ".json")).success(function(data) {
$scope.text = data;
});
HomeControllers.controller('WGHomeSurveyCtrl', ['$scope',
function($scope) {
$scope.lan2= $scope.text;
$scope.lan = $scope.$parent.lan;
}]);
實際結果是,父控制器中的{{text}}正在顯示,這意味着$ http部分可以正常工作。 在子范圍內,{{lan}}也顯示正確的值; 但是{{lan2}}顯示不正確; {{lan2}}顯示為純文本。
有什么想法嗎? 謝謝!
由於$ http調用延遲,在為lan2
分配了text
的值后, text
會更新,因此lan2
成為此時的text
。
最簡單的解決方案是在視圖中僅使用{{text}}
。 但是,如果這不是一個選項(例如, text
可能用於其他用途並且已更改),則可以在text
更新時添加觀察者或發出消息並更新lan2
。
順便說一句。 您所有父范圍的變量應在子范圍內可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.