0

在主干中,我创建了以下模型、集合和视图

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 套接字功能更新我的骨干模型?

4

1 回答 1

0

Backbone.Model.extend({})返回一个类,而不是一个实例。你应该改写:

var Sensor = Backbone.Model.extend({});
变种传感器=新传感器();

sensor.on('变化:温度',函数(温度){
  console.log('新温度:' + 温度);
});

var conn = new ab.Session('ws:localhost:8080', function() {
    conn.subscribe('温度', function(topic, data) {
        console.log('当前温度读数' + data.temperature);
        sensor.set({temperature:data.temperature});//尝试改变主干模型

    });
}, 功能() {
    console.warn('WebSocket 连接关闭');
}, {
    'skipSubprotocolCheck':真
});
于 2013-06-21T17:13:02.337 回答