绑定Backbone.js和Underscore.js中的回调

时间:2012-02-19 13:40:18

标签: javascript backbone.js underscore.js

我有以下代码:

  initialize: function() {
    _.bindAll(this);

    var callBack = function(res) {
      window.item = new Item(res);
      this.render();
    };

    _.bind(callBack, this);

    $.get('/item/parse', {
      uri: decodeURIComponent($.urlParam('uri')),
      title: decodeURIComponent($.urlParam('title'))
    },
      callBack
    );
  },

目的是在$ .get函数完成后调用render()。但是,即使将回调函数与_.bind绑定后,我仍然在控制台中得到“对象没有函数渲染”。我在这里使用绑定不正确吗?

2 个答案:

答案 0 :(得分:6)

_.bind返回一个新函数,所以:

callBack = _.bind(callBack, this);

您也可以使用_.bindAll,但在定义函数后必须将其命名为。否则,在您拨打_.bindAll时没有任何功能。请注意,在这种情况下您必须使用this.callBack = ...,否则this将不包含任何函数。

同时使用_.bind_.bindAll是多余的。

答案 1 :(得分:2)

我通常在我的模型上写一个'load'方法,我把它作为参数回调。然后我从视图中的render()方法调用此方法,并在回调函数中执行我需要做的任何事情(当然,在加载数据后,在模型中触发该回调)。