I am trying to get data coming from websocket in order to automatically update the value inside the control area.
My service:
mimosaApp.service("Device", function ($websocket) {
var self = this;
var ws = $websocket.$new({
url: "ws://" + window.location.host + ":81",
reconnect: true
});
this.data = {};
ws.$on("$open", function() {
ws.$emit("get", "device");
});
ws.$on("$message", function (message) {
console.log("WS Received", message);
for(var key in message) {
self.data[key] = message[key];
}
console.log(self.data);
});
this.send = function (obj) {
ws.$emit("set", obj);
};
});
And my simple controller:
angular.module("MimosaApp").controller("PageController", ["Device", "$scope", "$http", function(Device, $scope, $http) {
$scope.device = Device;
}]);
When a socket connection is made, the browser sends a data request message ($ open event). When it receives a response, it updates the Device.data object with a JSON object.
But I don’t see it reflected in my scope / view. If inside the controller I set something like Device.data.name ='blah';, I can see the name property in the controller scope / view.
I'm a little new to Angular, so sorry if my question is not entirely clear. :)
My mind is trying to use it like:
<div class="container-fluid">
location
<ul>
<li ng-repeat="(key, value) in device.data">
{{key}}: {{ value }}
</li>
</ul>
<p>{{device.data.face}}</p>
</div>