从获取到表行的响应

时间:2014-03-16 12:11:51

标签: backbone.js backbone-views

这是一个两个问题。我试图在获取表行/数据后呈现响应。

    UsersRow = Backbone.View.extend({

        template: _.template("-"),
        tagName: 'td',

        initialize: function() {


            this.users = new Collections.AllUsers();
            this.users.fetch({
                success: function(response) {

                    this.response = response;

                    console.log(JSON.stringify(this.response));

                    return this.response;


                }


            }); 

// these two are undefined
    console.log(JSON.stringify(this.response));
    console.log(JSON.stringify(this.users.response));



 },

        render: function(options) {



            return this;
        }


    });

第一个console.log工作正常,尽可能地获取所有内容。第二个,完全没有。有什么问题?

另外,如何将其呈现给每个表行?

谢谢。

2 个答案:

答案 0 :(得分:1)

在回答您的第一个问题时,您在调用fetch后立即进行日志记录,而不是在成功回调中。

提取是异步的,当您尝试记录时,您无法保证返回结果。我已注释了您的initialize函数,以显示代码的执行顺序。所有依赖this.response的代码都需要在success被调用后执行。

initialize: function() {

  // 1
  this.users = new Collections.AllUsers();

  // 2
  this.users.fetch({

    // 4
    // Success will be called after the async request completes
    success: function(response) {
      this.response = response;
      console.log(JSON.stringify(this.response));
      return this.response;
    }
  }); 

  // 3
  console.log(JSON.stringify(this.response));
  console.log(JSON.stringify(this.users.response));

}

答案 1 :(得分:1)

尝试这个

var UserModel = Backbone.Model.extend({});
var UserCollection = Backbone.Collection.extend({
    model: UserModel,
    url: "http://example.com/get_all_users.php",
    parse: function(data) {
        return data;
    }
});
var UsersRow = Backbone.View.extend({
    el: $("#page"),
    render: function() {
        var that = this;
        this.collection = new UserCollection();
        this.collection.fetch({
            type: "GET",
            contentType: 'application/json',
            dataType: "json",
            success: function(collection, response) {
                var template = _.template(userTemplate, {
                    users: that.collection.models
                });
                that.$el.html(template);
            },
            error: function(collection, response) {
                alert("error");
            }
        });
    }
});
return UsersRow;

您的Web服务可以请求和响应JSON数据。

您可以访问这些网站以供参考。

http://blog.revivalx.com/2014/02/25/crud-operation-using-jquery-mobile-on-android-part-2/

http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/