Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
Javascript 将数据推送到骨干网中路由器的模型_Javascript_Backbone.js_Backbone Routing - Fatal编程技术网

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