Backbone.js服务调用事件绑定

时间:2014-03-10 17:41:27

标签: json web-services rest events backbone.js

我是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'时我会得到响应数据?

1 个答案:

答案 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
            }
        });
    }
});