2013-07-22 82 views
30

我有以下:

$scope.$watch('tableForm.$pristine', function (newValue) { 
    $rootScope.$broadcast("tableDataUpdated", 
     { state: $scope.tableForm.$pristine }); 
}); 

我也嘗試:

$scope.$watch('tableForm.$pristine', function (newValue) { 
    var tableForm = { pristine: $scope.tableForm.$pristine }; 
    $rootScope.$broadcast("tableDataUpdated", tableForm); 
}); 

當tableForm $pristine狀態變化則$scope.tableForm.$pristine的值被設置爲False和這個消息被廣播。

然而,當我嘗試收到消息的「狀態」的值沒有定義:

$rootScope.$on("tableDataUpdated", function (args) { 
    alert(args.state); 
}); 

我也試過:

$rootScope.$on("tableDataUpdated", function (args) { 
    alert(args.tableForm); 
}); 

不過我似乎不能夠發送對象並將其收到

回答

58

這是因爲偵聽器函數有兩個參數傳遞給它,eventargs。見the angular docs.

嘗試:

 
$rootScope.$on("tableDataUpdated", function (event, args) { 
     alert(args.state); 
    }); 
+1

這就是現在的工作。非常感謝。我希望AngularJS文檔更清晰一些。我想了很長時間找到一些使用$ broadcast進行搜索的例子,我會接受答案。 – Melina