Javascript 将数据推送到骨干网中路由器的模型
这种方法似乎有些不对劲。。。我继承了一个主干项目,路由就是这样完成的:Javascript 将数据推送到骨干网中路由器的模型,javascript,backbone.js,backbone-routing,Javascript,Backbone.js,Backbone Routing,这种方法似乎有些不对劲。。。我继承了一个主干项目,路由就是这样完成的: APP.routes.on("route:default", function( actions ) { var url = some.api jsonp.request(url,function(data){ var model= new mModel(data.someData); var view = new MyView({model:model
APP.routes.on("route:default", function( actions ) {
var url = some.api
jsonp.request(url,function(data){
var model= new mModel(data.someData);
var view = new MyView({model:model});
});
});
我想知道这是否是一个标准的可接受的方法,或者如果不是,什么是更好的解决方案。我找不到任何人使用这种架构的例子。一个完整的代码重构并不是100%可行的,但我正试图写一些关注点。我关心的是这里的模型和视图是紧密耦合的。此模式在30条左右的管线上重复,所有管线都具有自己的模型/视图配对。应用程序还直接从视图发出嵌套JSON请求,这是一个完全独立的问题。无论如何,这个应用程序速度非常慢,我正试图缩小原因,就像我说的,至少可以说,这看起来很可疑。如何正确使用主干网路由器是一个很有争议的问题,但一般来说,你希望尽快向用户提供内容,即使它只是一个加载器,因为这总比什么都没有好。代码应该更像:
APP.routes.on("route:default", function( actions ) {
var view = new MyView
view.render()
});
MyView.js
// Abstract away the model's logic into the view
var MyView = Backbone.View.extend({
el: '#main-content',
template: _.template( '<blah>Some template</blah>' ),
initialize: function(){
this.model = new mModel()
},
// The model needs data first, so just return a loader while we wait
render: function(){
this.model.fetch({
success: _.bind( this.onModelDoneFetching, this )
})
this.$el.html('<img class="loader" alt="Loading content" />')
return this
},
// the model has the data so we can render content now
onModelDoneFetching: function(){
this.$el.html( this.template( this.model.toJSON() ) )
}
})
但是,应用程序的缓慢可能不是由于用户界面造成的——最有可能的是跨源请求导致性能滞后。如何将数据设置为模型?这就是问题吗?谢谢。我也倾向于处理这样的请求。。。我将不得不看看我们是否仍然能找到它为什么是这样建造的。这是一个缓慢的应用程序,有很多原因,我不想谈,但是的,跨领域的东西是一个因素。是的,但至少你已经确定了哪些领域需要工作。祝你万事如意!
Backbone.ajax = jsonp