2014-11-04 20 views
0

我在同一頁面中使用了兩個控制器。在angularJS中獲取已更新的Json數據

第一個控制器有兩個選項卡。第一個標籤有聯繫人列表,第二個標籤有收藏夾列表。

在第一個選項卡中。我展示了所有的數據。 在第二個選項卡,我已經展示基於isFavourites場

ng-show="user.isFavourites" 

如果這是真的DATAS。它正在顯示。

當我點擊第一個選項卡上的聯繫人列表。 Popup將顯示。在那個彈出窗口中,我有一個AddFav的按鈕。 Popup是第二個控制器。

當我點擊AddFav按鈕,我有設置isFavourites是真實的。

所以我的問題是

設置isFavourites,當我轉到第二個選項卡,這些數據將與去年提起更新後顯示。

我的形式是

<div id="userListControl"> 
    <div id="tab1">...</div> 
    <div id="tab2">...</div> 
</div> 
<div id="userDetailsControl"> 

</div> 


userDirectory.controller("userListControl", function($scope,$rootScope, $http) 
     { 
      $http.get('data/userData.json').success (function(data){ 
       $scope.users = data; 
      }); 

      $scope.selectUser = function(user){ 
       $rootScope.selectedUser = user; 
       showPopup(); 
      } 
     }); 
    }); 

    // Contact Details Controller with Watch() 
    userDirectory.controller("userDetailsControl", function($scope, $rootScope){ 
     $rootScope.$watch("selectedUser", function(newVal){ 
      $scope.user = newVal; 
     }); 

     $scope.addFav = function(user){ 
      $rootScope.selectedUser.isFavourites = true; 
      console.log($rootScope.selectedUser) 
     } 
    }); 

在第一控制,Selectuser使用聯繫人列表上點擊時,它會顯示在彈出

+0

的可能重複的[在角JS控制器之間傳遞數據?](http://stackoverflow.com/questions/20181323/passing -data-between-controllers-in-angular-js) – 757071 2014-11-04 06:18:46

+0

不知怎的,它是不同的,我已經通過兩個控制器之間的控制。我已經在watch目錄中使用了rootScope。再次我必須使用rootScope在手錶 – 2014-11-04 06:35:13

+0

您應該嘗試事件廣播或服務控制器通信。 – 2014-11-04 06:44:41

回答

0

數據我得到了這個解決方案。

我正在爲此使用廣播。

在第二控制器

$scope.addFav = function(user){ 
      $scope.user.isFavourites = true; 
      $rootScope.$broadcast('addFavourites', $scope.user); 
     } 

在第一控制器

$scope.$on('addFavourites', function (event, data) { 
// Here I am doing my stuff.. 
});