我是Backbone的新手,我正在尝试执行get请求(getDivisions)并将响应JSON存储到我的默认值中定义的“divisions”中。我在服务电话中记录了“部门”,并在服务电话之外,如下所示。
define(['underscore', 'backbone', 'service-manager', 'backbone-nested'],
function(_, Backbone, svgmgr) {
return Backbone.NestedModel.extend({
defaults: {
message: "",
divisions: []
},
initialize: function () {
this.getDivisions();
},
getDivisions: function() {
var that = this;
svgmgr.Interface.call('getDivisions').done(function(data) {
that.set('divisions', data);
console.log("Inside the service call: " + that.get('divisions'));
});
console.log("Outside service call" + this.get('divisions'));
}
});
});,
在Dev Tools中,首先调用“服务外调用”日志,返回一个空白数组(默认值),然后调用“服务调用内部”日志,返回正确的响应数据。这显然不是我想要的。
如何让这个模型在初始化时运行这个服务调用,这样当我引用'divisions'时我会得到响应数据?
答案 0 :(得分:0)
首先你不需要Model而是Collection,第二个Backbone可以为你处理ajax调用。
所以你必须这样做:
var Division = Backbone.Model.extend({
urlRoot: /* url to get a single division */,
defaults: {...}
});
var Divisions = Backbone.Collection.extend({
url: /* url to get all your divisions */,
model: Division,
initialize: function () {
this.fetch({
success: function(response) {
// you get the result here
}
});
}
});