2016-06-07 84 views
0

有什麼方法可以訪問事件中設置的變量嗎?事件中設置的訪問變量

代碼:

$scope.$on('event_detail', function (event, args) { 
     $scope.id = args; 
     console.log($scope.id); // it works 

}); 
console.log($scope.id); // it says undefined 

如果我嘗試在控制檯上顯示 「$ scope.id」,控制檯說 「不確定」。 我要訪問的變量out功能事件$範圍$上

我的廣播:

$scope.showDetail = function (data) { 
     $rootScope.$broadcast("event_detail", data.id_case); 
     $location.path("/detailcase/" + data.id_case); 
    }; 
+0

是,如果$ broadcast/$ emit具有參數:$ broadcast(name,args);.你的$ broadcast/$發射是什麼樣的? – Brian

+0

好的,我會更新 –

回答

4

的問題是,$scope.$on是異步,所以當你調用console.log事件功能外,$scope.id是尚未設置。

所以你必須在$on函數中做任何你想做的事情,因爲那樣你肯定知道$scope.id已經被填充;

+0

好的,謝謝。 –

+0

很好,完全錯過了那個。 – Brian

0

問題是你要定義一個delegate這裏..沒有呼叫發生到現在..

$scope.$on('event_detail', function (event, args) { 
     $scope.id = args; 

     // it will work because the $scope.id get populated 
     console.log($scope.id); 

}); 

//$scope.id It is not populated yet .. 
//it will be populated when the broadcast get called 
console.log($scope.id); 

如果你的代碼看起來像下面比它會工作的東西...

$scope.$on('event_detail', function (event, args) { 
     $scope.id = args; 
     console.log($scope.id); // it works 

}); 

$rootScope.$broadcast("event_detail", data.id_case); //make the braodcast 

console.log($scope.id); // it will be no-more undefined