2017-09-22 35 views
0

我在我的index.htm兩頁將pageA.html和pageB.html。如何從孩子的狀態變量傳遞給父狀態AngularJs UI路由器

在app.js我使用UI-路由器。

當我的應用程序運行Java控制器redierect應用到其中的index.html以$ urlRouterProvider激活pageA的默認。

所以index.html中我有

<div ng-app="myApp"> 
<span>{{user.name} {{user.firstname}}</span> 
<a href="#pageA"><a/> 
<a href="#pageB"><a/> 
    <div ui-view ></div> 
</div> 

在app.js

$urlRouterProvider.when('', '/pageA'); 
$stateProvider 

    .state('home', { 
     url : '/home', 
     views : { 
      "" : { 

       templateUrl : 'index.html', 
       controller : 'IndexController' 
      } 
     } 

    }) 
.state('pageA', { 
     url : '/pageA', 
     views : { 
      "" : { 

       templateUrl : 'pageA.html', 
       controller : 'pageAController' 
      } 
     } 

    }) 


    .state('pageB', { 
     url : '/pageB', 
     views : { 
      "" : { 

       templateUrl : 'pageB.html', 
       controller : 'pageBController' 
      } 
     } 

    }) 

}); 

我都在索引控制器和PageAController試圖設置用戶變量:

$scope.user = UserService.getConnectedUser(); 

的問題是用戶無法在index.html中識別。

我不知道如何傳遞呢?

更新:

我試圖解決建議: 我在IndexController.js

$rootScope.$broadcast('HomeEvent', "String"); // going down 
    $scope.$on("HomeEvent", function (evt, data) { 
      $scope.Message = "Inside HomeController : " + data; 
    }); 

在我PageAController.js補充說:

$rootScope.$on('HomeEvent', function (event, data) { 
     $scope.Message = "Inside PageAController : " + data; 
     console.log("data getted ="+$scope.Message); // 'Some data' 
}); 

,它不即使輸入$,我是否錯過了什麼?

+0

看廣播(向下調用鏈中的一個功能),併發出(調用一個函數鏈向上)。這就是我們通常用它來傳遞控制器之間的信息 –

+0

THX,野趣,我試圖使用它,你可以看到我的問題的更新,$德州儀器處理器事件 – selma

+0

我試圖用$超時不進入(函數(){},500);爲了等待孩子被創造 – selma

回答

1

問題通過使用廣播(沿着鏈調用一個函數)併發出(在鏈上調用一個函數)解決,並且還將播放時間設置爲延遲時間,以便通過引用來等待創建子節點這queestion link

相關問題