Базовая модель обновления
В основе я создал следующие модели, коллекции и представления
var sensor= Backbone.Model.extend({})
var sensorCollection = Backbone.Collection.extend({
model: sensor
})
var sensors= new sensorCollection;
var SensorView =Backbone.View.extend({})
var AppView =Backbone.View.extend({})
var App = new AppView
У меня также работает этот сокет PHP:
var conn = new ab.Session('ws:localhost:8080', function() {
conn.subscribe('temperature', function(topic, data) {
console.log('Current temperature reading' + data.temperature);
sensor.set({temperature:data.temperature});//Attempting to change backbone model
});
}, function() {
console.warn('WebSocket connection closed');
}, {
'skipSubprotocolCheck' : true
});
Я пытаюсь изменить / обновить модель с показаниями температуры из гнезда. Как вы можете видеть, я пытался sensor.set
а также попробовал следующее:
App.model.set
This.model.set
App.sensor.set
И каждый по-другому говорит либо неопределенное, либо что-то в функции не найдено. Я что-то здесь упускаю? Все они объявлены в одном и том же $(function(){}
Как я могу обновить свою модель магистрали из функции сокета Autobahn?
1 ответ
Backbone.Model.extend({})
возвращает класс, а не экземпляр. Вы должны написать вместо этого:
var Sensor = Backbone.Model.extend ({}); переменный датчик = новый датчик (); sensor.on ("изменение: температура", функция (температура) { console.log('новая температура: ' + температура); }); var conn = new ab.Session ('ws: localhost: 8080', function () { conn.subscribe ('температура', функция (тема, данные) { console.log ("Текущее показание температуры" + data.tempera); sensor.set ({температура: data.tempera});// Попытка изменить модель магистрали }); }, function() { console.warn("Соединение WebSocket закрыто"); }, { 'skipSubprotocolCheck': true });