1

我目前正在尝试编写一个模型,该模型将在获取数据时简单地运行一个函数。就我而言,我正在以正确的方式实施它,但它一再未能按我期望的方式工作。

目前,模型如下所示:

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 的实例上调用时,警报框都会按预期弹出“this works”。但是,如果我将事件映射更改为

events: {
    reset: "makeItems"
}

或者

events: {
    reset: this.makeItems
}

该功能不运行(您看不到“这不起作用”警告框)。也许这是由于我对这个事件映射的工作方式有误解,但我很确定我已经看到了这样的东西,但我不知道为什么它不起作用。我查看了主干文档,但它们的描述性不是很好,但是,据我了解,我所写的应该可以工作。

希望这不会太难解决

非常感谢。

4

1 回答 1

1

通常,在主干视图中使用事件哈希,由主干文档支持。对于模型,您需要使用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. 它触发一个change. http://backbonejs.org/#Model-fetch

于 2013-06-28T01:26:27.963 回答