L'aggiornamento della proprietà del modello non ha alcun effetto sulla vista durante l'aggiornamento del modello nella richiamata dell'evento, eventuali idee per risolvere questo problema?La vista non è aggiornata in AngularJS
Questo è il mio servizio:
angular.service('Channel', function() {
var channel = null;
return {
init: function(channelId, clientId) {
var that = this;
channel = new goog.appengine.Channel(channelId);
var socket = channel.open();
socket.onmessage = function(msg) {
var args = eval(msg.data);
that.publish(args[0], args[1]);
};
}
};
});
publish()
funzione è stata aggiunta in modo dinamico nel controller.
Controller:
App.Controllers.ParticipantsController = function($xhr, $channel) {
var self = this;
self.participants = [];
// here publish function is added to service
mediator.installTo($channel);
// subscribe was also added with publish
$channel.subscribe('+p', function(name) {
self.add(name);
});
self.add = function(name) {
self.participants.push({ name: name });
}
};
App.Controllers.ParticipantsController.$inject = ['$xhr', 'Channel'];
Vista:
<div ng:controller="App.Controllers.ParticipantsController">
<ul>
<li ng:repeat="participant in participants"><label ng:bind="participant.name"></label></li>
</ul>
<button ng:click="add('test')">add</button>
</div>
Quindi il problema è che facendo clic sul pulsante aggiorna la visualizzazione correttamente, ma quando ricevo il messaggio dalle paroline Canale accade, anche il add()
la funzione si chiama
Questo è stato utile, e una volta ho pensato al motivo per cui ho d per fare questo nel caso degli eventi DOM/jQuery, aveva senso per me e io ero in grado di accettarlo. – duma
Freddo. Non sapevo che potessi iniettare lo scope di root. – heneryville
Per i callback 'setTimeout', utilizzare invece il servizio' $ timeout': https://coderwall.com/p/udpmtq – itghisi