2015-05-30 60 views
1

我想將一個變量綁定到ng-show,現在它只能用於單擊事件。例如,我與socket.io工作,我希望當服務器發送消息到客戶端,該變量更改,然後觸發ng-show,但它不工作!只有當我點擊並觸發ng-click事件,我希望有約束力的作品。有什麼問題?觸發ng顯示僅適用於ng單擊事件

這是我的控制器,在這段代碼中我發現服務器消息和console.log工作並打印TRUE,但在ng-show中沒有任何內容。下次我點擊按鈕,它的作品!我不明白爲什麼

app.controller("mainCtrl", function($scope){ 
$scope.loading=false; 
$scope.socket = io.connect('http://localhost:8080'); 

$scope.getNewEvent = function(){ 
    $scope.socket.emit('getNewEvent'); 
}; 

//here i catch server messages 
$scope.socket.on('setNewEvent', function(data){ 
    $scope.loading = true; //loading variable changes but not effects ng-show 
    console.log($scope.loading); 
}); 
}); 

這是我的HTML:

<div class="loading" ng-show="loading">Loading... {{loading}}</div> 

回答

3

您需要應用範圍的變化,因爲角度不知道做的插座事件模型更改任何東西(它發生從角度消化生命週期的「外部」):

$scope.socket.on('setNewEvent', function(data){ 
    $scope.loading = true; 
    $scope.$apply(); 
}); 
+0

謝謝。它解決了我的問題 – Fcoder