“未捕获的TypeError:无法读取骨干和信号R集成期间发生的未定义属性'队列'

时间:2012-12-30 18:10:58

标签: signalr backbone-views signalr-hub signalr.client

我有一个signalR服务器队列hab。我试图启动服务器并在我的SearchResultListItemView视图中单击按钮时向服务器发送一个消息。但无法正常工作,我收到错误“Uncaught TypeError:无法读取属性'队列'”。

这是我的SearchResultListItemView视图,我必须在发生click事件时调用signalR服务器。我只想在点击时向服务器发送一些值。然后我会将响应发送给所有其他客户端以加载更改。我怎样才能做到这一点?或者这里的问题是什么?

window.SearchResultListItemView = Backbone.View.extend({
tagName: "tr",

initialize: function () {

    var _this = this;
    this.model.bind("change", this.render, this);
    this.model.bind("destroy", this.close, this);
    // here is the error occured in this line:
    var queue = $.connection.queue;

    // Start the connection
    $.connection.hub.start(function () {
        queue.ReloadQueueMember("Hello World!", "hi all");
    });
},

events: {
    "click a": "JoinQueue"
},

JoinQueue: function (e) {       
    e.preventDefault();
    var name = this.model.get("QueueName");
    var Id = this.model.get("CustomerId");

     //SignalR Proxy created on the fly
      queue.send(name, 'hannan19')
      .done(function () {
            console.log('Success!')
       })
       .fail(function (e) {
            console.warn(e);
       });
},

render: function () {
    var data = this.model.toJSON();
    _.extend(data, this.attributes);
    $(this.el).html(this.template(data));
    return this;
}
});

这是我的SignalR服务器:

public class Queue : Hub
{
    public void Send(string QueueName, string UserName)
    {
        Clients.ReloadQueueMember(QueueName, UserName);
    }
}

1 个答案:

答案 0 :(得分:0)

要检查的几件事情:

  • 确保你使用NuGet的最新版本(目前,1.0.0-rc1;你需要检查“包括预发布”才能看到它)。

  • 如果$.connection未定义,请确保您正在加载静态SignalR客户端(目前,“jquery.signalR-1.0.0-rc1.js”)。检查您喜爱的浏览器的开发者工具的“网络”标签,确认它已被找到并加载。

  • 如果$.connection.queue未定义,请确保您正在加载动态SignalR客户端(〜/ signalr / hubs)。

  • 此行错误(如果您使用的是1.0.0-rc1):

queue.ReloadQueueMember("Hello World!", "hi all");

应该是:

queue.client.reloadQueueMember("Hello World!", "hi all");

  • 同样,这一行在1.0.0-rc1:
  • 中也是错误的

queue.send(name, 'hannan19')

应该是:

queue.server.send(name, 'hannan19')