【问题标题】:Backbone.js approachBackbone.js 方法
【发布时间】:2014-12-12 21:48:41
【问题描述】:

我有一个包含 2 个字段的表单(在本地主机上):

名字(文本框) 姓氏(文本框)

提交表单后,我需要使用 API - https://beta.test.com/api

文档说 -

“POST /user 会将详细信息添加到系统并生成将返回的用户 ID。”

收到用户 ID 响应后,我需要调用另一个端点 -

“POST /user/metadata 将获取先前添加的用户的元数据。”

我必须在backbonejs 中构建它。我的方法应该是什么?你有什么教程可以看吗?

我做了一些代码,但它给了我 - “Access-Control-Allow-Origin”。我已经检查了服务器,并且 API 已经允许所有人跨域。

请提出建议。

【问题讨论】:

标签: backbone.js


【解决方案1】:

查看TODO app in backbone way的一个很好的例子。

我还建议您阅读Backbone's documentation 并查看源代码。 它将记录在案,因此您可以在那里找到所需的一切,如果没有查看source


您的表单的简单实现可以这样实现:

为了通过 REST 创建用户模型与 API 交互和数据交换:

var UserModel = Backbone.Model.extend({
    urlRoot: 'your/api/path',
    default: { // this will be setted when model attributes are empty
        firstname: 'Default Name', 
        lastname: 'Default Lastname'  
    }
});

表单视图,它将为您呈现表单并将模型的属性绑定到表单的元素:

var UserForm = Backbone.View.extend({
    initialize: function() {
        this.render();
    },
    el: '.form-container', // this will attach view to the DOM's element with 'form-container' class
    template: _.template($('#user-form').html()),
    events: {
       'submit': 'onFormSubmitted',
       // validation logic could be added here
    },
    render: function() {
        this.$el.html(this.template(this.model.toJSON()));
    },
    onFormSubmitted: function(e) {
        e.preventDefault(); // we don't need to submit the form
        // get form elements here and setting on model
        // saving model at the end
        var firstName = this.$('input[name="firstname"]').val();
        var lastName = this.$('input[name="lastName"]').val();

        this.model.set({firstname: firstName, lastname: lastName});
        this.model.save(); // this will make POST request to your API
     }
});

然后初始化你的view并传递User模型。

var userForm = new UserForm({model: new UserModel()});

我已经为你留下了模板的声明。


在使用 Backbone 时,有很多工作人员因跨源请求策略问题。实际上,这不是 Backbone 的事情。 Backbone 使用$.ajax 与 REST-full 资源进行交互。所以你只需要配置$.ajax。看here

【讨论】:

  • 这有帮助。使用下一个端点怎么样?我应该为其添加另一个模型吗?
  • 端点是 - beta.test.com/api/user & beta.test.com/api/user/metadata。我们有更多端点,例如 - beta.test.com/api/groupbeta.test.com/api/group/metadata。最好设置一次然后忘记它。
  • 你有什么教程我也可以看看吗?任何已经构建的 github 示例?
  • 网上有很多例子。我还发布了有用的员工here。你能提供真实的例子吗?一个模型可以保存到不同的端点,但是需要重写Backbone.Model的save方法。
  • 如何使用 $.ajax 解决跨域问题
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2012-08-06
  • 1970-01-01
相关资源
最近更新 更多