骨干事件地图无法正常工作

时间:2013-06-28 01:17:21

标签: javascript events model-view-controller backbone.js

我目前正在尝试编写一个只需在获取数据时运行函数的模型。就我而言,我正在以正确的方式实施它,但它反复无法以我期望的方式工作。

此时,模型看起来像这样:

var MyModel = Backbone.Model.extend({
    // fetch the data for this, on return, create modela about it
    url: function() {
        return 'api.example.com/users/' + this.id + '/intialisation';
    },
    events: {
        reset: alert('this works')
    },
    makeItems: function() {
        var newItems, currentInitialiser, currentItem;

        alert('this does not');
    }
});

每当在此实例上调用fetch()时,警报框会按预期弹出“this works”。但是,如果我将事件映射更改为

events: {
    reset: "makeItems"
}

events: {
    reset: this.makeItems
}

该功能未运行(您没有看到“这不起作用”警告框)。也许这是由于我对这个事件地图的工作方式的误解,但我很确定我已经看到这样的东西有效,我无法弄清楚为什么这不起作用。我查看了主干文档,但它们不是很具描述性,但据我所知,我写的内容应该有效。

希望这不会太难解决

非常感谢。

1 个答案:

答案 0 :(得分:1)

通常,骨干视图中使用事件哈希,如骨干网documentation所支持。对于模型,您需要使用listenTo创建一个侦听器。

var MyModel = Backbone.Model.extend({
    // fetch the data for this, on return, create modela about it
    url: function() {
        return 'api.example.com/users/' + this.id + '/intialisation';
    },
    initialize: function() {
        this.listenTo(this,'reset',this.makeItems);
    },
    makeItems: function() {
        var newItems, currentInitialiser, currentItem;
        alert('this does not');
    }
});

这应该指向正确的方向。

编辑:另外,根据Backbone的文档,模型上的fetch不会触发reset。它会触发changehttp://backbonejs.org/#Model-fetch