1

我创建了一个名为“艺术家”的主干模型和一个名为“艺术家视图”的主干视图。我成功地获取了模型,因为我可以在我的 Chrome devtools 网络选项卡中看到它。

但是,此时 fetch 没有触发任何“更改”事件。奇怪的是,它在创建模型时很好地触发了一个“更改”事件,但在获取这个模型时却没有......

我可以在 fetch() 方法中使用成功回调,但我觉得这不是最合适的方法。任何想法 ?

模型和视图初始化:

var artist = new Artist({id: 3});
var artistView = new ArtistView({model: artist});

然后我获取我的模型:

artist.fetch();

在我的主干视图类中,我聆听来自模型的“更改”事件:

var ArtistView = Backbone.View.extend({

    initialize: function() {
        this.model.on("change", this.test());
    },

    test: function() {
        console.log(this.model.get("name"));
    }
});

编辑:“同步”事件也不起作用。当我创建模型时,它会很好地触发“同步”事件,但在成功获取模型时不会。

4

2 回答 2

3

您需要使用“同步”事件。

  var ArtistView = Backbone.View.extend({

    initialize: function() {
        this.model.on("sync", this.test());

    },

    test: function() {
        console.log(this.model.get("name"));
    }
});

Change 仅在属性更改时触发。

文档

编辑 thx 给斯蒂芬。

于 2013-05-28T21:07:20.837 回答
0

The problem came from my event listener. It actually didn't take the context into account.

Here is the solution :

this.model.on("sync", this.test, this);

And not

this.model.on("sync", this.test());
于 2013-05-29T15:36:57.467 回答