Backbone 和 Ajax 未定义的请求
Backbone and Ajax request with undefined
我需要获取一些值(这里是 rhOptions)所以我进行了 ajax 调用,但问题是视图将此值呈现为 "undefined"
有我的查看代码的摘录:
UserView.prototype.initialize = function() {
var self;
console.log("Test000");
self = this;
$.ajax({
url: "http://test.redhand.com.pl/lampy/api/filter",
type: "GET",
dataType: "json",
success: function(data) {
console.log(data);
self.rhOptions = data.rhOptions.tel;
}
});
console.log(this.rhOptions);
this.listenTo(this.model, 'change invalid', this.render);
this.render();
return this.serverValidation = {};
};
UserView.prototype.render = function() {
var firstInput, user;
user = this.model.toJSON();
user.error = this.model.validationError || {};
_.extend(user.error, this.serverValidation);
this.template(this.model.config('tpl'), {
user: user,
rhOptions: this.rhOptions
});
this.$('form').attr('novalidate', 'novalidate');
firstInput = this.$('input[required][value=""]:first');
_.defer(function() {
if (!firstInput.val()) {
return firstInput.select();
}
});
return this;
};
我尝试在视图中设置 rhOptions 值,但似乎在我获取 JSOn 文件之前视图已呈现,我该如何修复它?
试试这个我还没有测试过。将渲染函数移动到 ajax 调用的成功回调中,以便它获取加载的数据。
success: function(data) {
console.log(data);
self.rhOptions = data.rhOptions.tel;
console.log(self.rhOptions);
self.listenTo(self.model, 'change invalid', self.render);
self.render();
}
我需要获取一些值(这里是 rhOptions)所以我进行了 ajax 调用,但问题是视图将此值呈现为 "undefined" 有我的查看代码的摘录:
UserView.prototype.initialize = function() {
var self;
console.log("Test000");
self = this;
$.ajax({
url: "http://test.redhand.com.pl/lampy/api/filter",
type: "GET",
dataType: "json",
success: function(data) {
console.log(data);
self.rhOptions = data.rhOptions.tel;
}
});
console.log(this.rhOptions);
this.listenTo(this.model, 'change invalid', this.render);
this.render();
return this.serverValidation = {};
};
UserView.prototype.render = function() {
var firstInput, user;
user = this.model.toJSON();
user.error = this.model.validationError || {};
_.extend(user.error, this.serverValidation);
this.template(this.model.config('tpl'), {
user: user,
rhOptions: this.rhOptions
});
this.$('form').attr('novalidate', 'novalidate');
firstInput = this.$('input[required][value=""]:first');
_.defer(function() {
if (!firstInput.val()) {
return firstInput.select();
}
});
return this;
};
我尝试在视图中设置 rhOptions 值,但似乎在我获取 JSOn 文件之前视图已呈现,我该如何修复它?
试试这个我还没有测试过。将渲染函数移动到 ajax 调用的成功回调中,以便它获取加载的数据。
success: function(data) {
console.log(data);
self.rhOptions = data.rhOptions.tel;
console.log(self.rhOptions);
self.listenTo(self.model, 'change invalid', self.render);
self.render();
}