如何将值从Collection收集到backbone.js中的模型

时间:2014-04-03 14:05:49

标签: javascript jquery backbone.js cordova-3 backbone-collections

我想传递并从视图中获取一个值来模拟集合的使用,我能够将值传递给模型,当我使用集合时它不起作用。我不知道这里的问题在哪里是我的代码。

我的模特

var PostwallModel=Backbone.Model.extend({

    urlRoot: 'http://localhost:3400/post',
    idAttribute: '_id',
    defaults : {
        userId: '',
        userName: " ",
        postmsg : "unknown"
    },

    initialize: function() {
        console.log("<><><>post model initialize<><><><><>");
    },

    // Delete item (row) from
    clear: function() {
        this.destroy();
    }

});

我的收藏

var PostwallCollection = Backbone.Collection.extend({
    url: 'http://localhost:3400/post',
    model: PostwallModel
});

**here is my view**

var PostwallView = Backbone.View.extend({

    el: $("#page"),
    template: _.template(PostwallTemplate),

    events: {
        'click #postinwall'        : 'submitpost',
    },

    initialize: function() {
        console.log("_______postmodel");
        this.model = new PostwallModel();
        var obj= new PostwallModel();
        obj.set({userId:'123',userName:"str ji",postmsg:'the post is here'});
        console.log(obj.get('postmsg'));
        obj.toJSON();

        console.log(JSON.stringify(obj));

        // console.log(obj.get('userName'));

        var collection = new PostwallCollection();

        _.bindAll(this, 'submitpost');

        console.log(collection);
        collection.add(obj,{id:1});
        console.log("collection"+collection);
        console.log("collection fetch value "+JSON.stringify(collection.fetch()));
        this.render();
    },

    render: function() {
        alert(" render function");
    },

    submitpost: function(e) {
        //Save post model to server data
        e.preventDefault();
        var post_data = JSON.stringify( this.getFormData( this.$el.find('form') ) );
        //
        //this.model.save(post_data);
        this.model.set(post_data);
        this.collection.add(this.model);
        return false
    },

    //Auxiliar function
    //how to get data from textarea

});

这里我进入控制台----&gt; [],集合获取值[object Object] ,问题在哪里以及如何保存和获取值。

1 个答案:

答案 0 :(得分:1)

试试这个:

var self = this;
collection.fetch()({
    success: function (data) {
        console.log("collection fetch value "+data);
        self.render();
    }
});

您只想在获取成功后执行渲染。 fetch方法以异步方式运行。这意味着在fetch方法仍在执行其操作时,它之后的所有内容仍将尝试执行。通过将render方法放在成功回调中,确保在实际拥有该数据之前不会尝试使用您的收集数据。

相关问题