Backbone Model并在属性点击事件上触发到不同的端点

时间:2014-02-19 05:52:24

标签: backbone.js backbone-views backbone-events

我有一个从服务器获取数据的骨干模型,

var Post = Backbone.Model.extend({
    url:"api/post"
});

在获取它时返回并填充模型,如下所示

{
  by: 1,
  vote: 1,
  text: "I am a post"
}

我有一个列表视图,将这些项呈现为以下html

<span className='vote'>
   <i className='up-vote'></i>
       1
   <i className='down-vote'></i>
</span>

我想要做的是当用户点击upvote图标时我想向端点如下的服务器发出 PUT 请求

"api/post/:id/vote"

我正在努力的是,因为投票属性是Post模型的一部分,我如何使用现有的Post模型启动到这个不同的端点,因为我将投票属性作为Post模型的一部分。

1 个答案:

答案 0 :(得分:1)

我认为你有两个选择:

  • 一个是覆盖Backbone.sync
  • 另一个选择是使用AJAX请求,我认为这样更简单。

第二个选项的视图代码如下:

events : {
    'click #up-vote' : 'sendPutRequest', 
},
sendPutRequest: function() {
    $.ajax({
        url: 'api/post/' + this.model.get('id') + '/vote',
        type: 'PUT',
        contentType: 'application/json',
        data: JSON.stringify(this.model.toJSON()),
        success: function(result) {
            // Do something with the result
        }
    });
}