这是一个两个问题。我试图在获取表行/数据后呈现响应。
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工作正常,尽可能地获取所有内容。第二个,完全没有。有什么问题?
另外,如何将其呈现给每个表行?
谢谢。
答案 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/