【问题标题】:Backbone.js collection.create function doesn't return updated model with wait: trueBackbone.js collection.create 函数不返回更新的模型等待:true
【发布时间】:2014-10-01 11:01:35
【问题描述】:

在将 Backbone.js 与 Laravel 4 一起使用时,我使用 this.collection.create() 和 wait: true 选项插入数据库。它可以插入数据库,但是如果设置了 wait: true ,它不会更新模型。因此,如果我再次尝试输出集合,即使尝试成功回调函数返回一个值并且 POST 请求返回为正,它也不会更新。

该应用程序是一个联系人管理系统。 这是我的联系人模型:

App.Models.Contacts = Backbone.Model.extend({

});

这是我添加联系人的视图

App.Views.AddContact = Backbone.View.extend({
el: '#addContact',
events: {
    'submit': 'addContact',
},
initialize: function() { // cache values
    this.first_name = $('#first_name');
    this.last_name = $('#last_name');
    this.email_address = $('#email_address');
    this.description = $('#description');
},
addContact: function(e) {
    e.preventDefault();
    this.collection = 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 });

},
});

这是收藏:

App.Collections.Contacts = Backbone.Collection.extend({
model: App.Models.Contacts,
url: '/projects/gamesapp/public/contacts',
});

这是页面上的脚本,它将所有这些都付诸实践:

<script>
    new App.Router;
    Backbone.history.start();

    App.contacts = new App.Collections.Contacts;
    App.contacts.fetch().then(function() {
        new App.Views.App({ collection: App.contacts });
    });
</script>

我该怎么做才能让它工作?我想在视图中创建以在本地更新模型,但它似乎没有。

谢谢!

【问题讨论】:

    标签: javascript backbone.js laravel-4


    【解决方案1】:

    问题不在于 js 或主干代码,而在于我编写的 Laravel 代码。

    POST 似乎返回了一个肯定的响应,但问题出在我的控制器的 store 方法中,你必须从 store() 函数返回 create() 函数!!! , 说清楚:

    public function store()
    {
        $input = Input::all();
    
        return Contact::create(array( // YOU HAVE TO RETURN SOMETHING
            'first_name' => $input['first_name'],
            'last_name' => $input['last_name'],
            'email_address' => $input['email_address'],
            'description' => $input['description'],
        ));
    
    }
    

    我的问题出现了,因为我没有返回它,只是调用了 Contact::create() 函数...(Contact 是 Laravel 模型)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多