从Backbone.js中的模型执行Ajax请求是否正确?

vic*_*ele 1 backbone.js backbone-routing

从Backbone.js中的"模型"执行Ajax请求是否正确?从"路由器"来看它更正确吗?我没有将RESTful用于Backbone(由于其他原因).当我说"做Ajax请求"时,我的意思是Ajax函数在模型中实现.该函数可以在模型外部调用(和).

我的Web应用程序不使用路由器(仅视图和模型).当我在应用程序中导航时,我不希望在浏览器中有url路由.有什么问题?

Sco*_*lvi 5

你的路由器应该尽可能干净,所以绝对不行.

在模型中,您可以定义模型的URL.

在您的视图中,您只需调用model.fetch().

我使用(和看到)最常见的模式是这样做:

var MyApp.myModel = Backbone.Model.extend({
    url: '/someResourceUrl'
});

var MyApp.myView = Backbone.View.extend({
    initialize: function() {
        this.model.bind("change",this.render,this);
        this.model.fetch();
    },
    render: function() {
        alert('do awesome stuff here');
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 您应该只是覆盖[Backbone.Sync](http://backbonejs.org/#Sync),这是Backbone每次尝试读取或将模型保存到服务器时调用的函数.这意味着model.fetch()将只使用您需要的任何自定义ajax调用.[这是SO帖子](http://stackoverflow.com/questions/5096549/how-to-override-backbone-sync),描述了如何执行此操作. (2认同)