簡體   English   中英

Angular JS父控制器無法將單獨的變量傳遞給子控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM