添加wait:true后,Backbone集合未更新

Om3*_*3ga 1 javascript jquery backbone.js

脚本

我正在使用骨干网建立联系经理.我有一个表单,当用户输入数据并按下提交按钮时,用户的数据将转到服务器并保存在数据库中.

问题

它确实有效,直到将其添加到数据库.但是,我还希望在添加到数据库后更新集合.出于这个原因,我使用以下代码行来更新集合.

addContact: function (e) {
    e.preventDefault();

    this.collection.create({
        first_name: this.$('#first_name').val(),
        last_name: this.$('#last_name').val(),
        email_address: this.$('#email_address').val(),
        description: this.$('#description').val()
    }, { wait: true });

    console.log(this.collection);
}
Run Code Online (Sandbox Code Playgroud)

上面的函数确实将数据添加到数据库,但它不会更新集合.但是当我删除{wait: true}它然后它确实更新了这个集合.

为什么wait: true不允许更新集合以及如何使其与之一起使用wait: true

UPDATE

我还添加了回调函数,如下所示

{wait: true, success: this.successCallback}
Run Code Online (Sandbox Code Playgroud)

并添加了这样的功能

successCallback: function (collection) {
    console.log('call back');
    console.log(this.collection);
}
Run Code Online (Sandbox Code Playgroud)

但它在控制台中没有显示此功能?

更新2

错误功能截图

在此输入图像描述

更新3

xhr截图

在此输入图像描述

小智 6

我有同样的问题(甚至相同的代码).在我的后端我有:

Contact::create([
'first_name' => Input::get('first_name'),
'last_name' => Input::get('last_name'),
'email_address' => Input::get('email_address'),
'description' => Input::get('description')
]);
Run Code Online (Sandbox Code Playgroud)

它以状态200 OK回复,但我的收藏尚未更新.我google了很多,但没有找到解决方案.

我的后端代码没有向脚本返回任何内容,因此我决定测试返回的smth是否会进行更改.所以我将我的后端代码更新为:

$contact = Contact::create([
'first_name' => Input::get('first_name'),
'last_name' => Input::get('last_name'),
'email_address' => Input::get('email_address'),
'description' => Input::get('description')
]);
return $contact;
Run Code Online (Sandbox Code Playgroud)

现在它奏效了!在这两种情况下,请求都以200 OK响应,但只有在返回数据时才会触发"成功"事件.

希望能帮助你.