<b>$scope</b>
не работает внутри функции обратного вызова.
angular.
module('common').
controller('bidVBoxController', ['$scope', '$location','$element', 'Socket', 'Bid',
function($scope, $location, $element, Socket,Bid){
var self = this;
self.socket = new Socket("ws://192.168.225.59:8010/ws/bidData/");
$scope.placeBid = function(){
self.socket.send({
type: "place_bid",
data: {
bidId: $scope.bid.id
}
});
};
console.log($scope.bid);
$scope.bid.top_bid_data="sss";//This works.
self.socket.onmessage(function(event) {
var data = JSON.parse(event.data);
console.log($scope.bid);//This doesn't work
$scope.bid.top_bid_data=data["message"];//This doesn't work
});
}])
Функция обратного вызова передается в self.socket.onmessage
, которая должна обновлять переменную $scope
.Но, похоже, это не работает.Пожалуйста, помогите.
Update1:
Этот контроллер используется с директивой bidVBox
, и есть несколько элементов:
<bid-v-box ng-repeat="bid in bids">
</bid-v-box>
КогдаФункция обратного вызова выполняется в контроллере первого элемента bid-v-box
, $scope.bid.top_bid_data=data["message"];
обновляет область видимости последнего элемента, а не первого.Я также пытался использовать $scope.$apply(function(){$scope.bid.top_bid_data=data["message"];})
.Но это не сработало.