Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js是这个任务的正确框架吗?_Backbone.js - Fatal编程技术网

Backbone.js是这个任务的正确框架吗?

Backbone.js是这个任务的正确框架吗?,backbone.js,Backbone.js,我已经看了几个小时的backbone.js教程了,如果不花点时间认真研究一下,我就无法决定它是否适合我想要实现的目标 我的应用程序主要基于一个页面,相当重的AJAX。此页面上有几个UI元素,它们轮询服务器并独立更新自身。此外,还有一个中央轮询机制,用于查找可能触发任何其他UI组件更新的事件 我考虑的是将所有这些独立的URL聚合成一个,让我的前端只监听该URL,然后将每个事件委托给相应的UI元素。实际上,它有点像我前端的消息总线 听起来像是合理地使用主干线?还是我没有抓住要点?主干网可以工作,但我

我已经看了几个小时的backbone.js教程了,如果不花点时间认真研究一下,我就无法决定它是否适合我想要实现的目标

我的应用程序主要基于一个页面,相当重的AJAX。此页面上有几个UI元素,它们轮询服务器并独立更新自身。此外,还有一个中央轮询机制,用于查找可能触发任何其他UI组件更新的事件

我考虑的是将所有这些独立的URL聚合成一个,让我的前端只监听该URL,然后将每个事件委托给相应的UI元素。实际上,它有点像我前端的消息总线


听起来像是合理地使用主干线?还是我没有抓住要点?

主干网可以工作,但我也会检查ember.js,也称为sproutcore 2.0,主干网对我来说太冗长了,ember.js会处理这个问题,检查。

主干网在这种情况下应该可以正常工作

创建一个中心事件轮询器。这将从服务器获取所有类型的事件,并将它们发布到应用程序的其余部分(未测试):

然后,您可以让多个模型监听这些事件:

var StockModel = Backbone.Model.extend({

    initialize : function() {
        this.poller.bind('stockChange', this.changeStock, this);
    },

    changeStock: function(stock){
        this.set({name: event.name});
    }
});
最后,让视图侦听模型中的更改:

var StockView = Backbone.View.extend({

    initialize : function() {
        this.model.bind('change:name', this.updateStock, this);
        //this.poller.bind('stockChange', this.updateStock, this); //you could also listen for poll events directly in view with out having a model for each view.
    },

    updateStock: function(){
        $(this.el).html(model.get("name")); 
    }
});
要设置轮询器和视图,请执行以下操作:

var eventPoller = new EventPoller();
var stockModel = new StockModel({poller: eventPoller})
var stockView = new StockView({model:stockModel}); 
eventPoller.poll();
一个普遍的建议是主干网需要几天的努力学习,但如果您阅读文档并遵循一些基本示例,您将了解最新情况

可能主干最让人困惑的是
这个
。我建议使用firebug并通过应用程序进行调试,以查看
是如何变化的

var eventPoller = new EventPoller();
var stockModel = new StockModel({poller: eventPoller})
var stockView = new StockView({model:stockModel}); 
eventPoller.poll();