Базовая модель обновления

В основе я создал следующие модели, коллекции и представления

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
}); 
Другие вопросы по тегам