在模型更改后触发视图以进行渲染

时间:2014-02-02 21:13:33

标签: javascript backbone.js marionette

在骨干网中,您可以执行以下操作:

model.trigger("destroy", model);

它将从集合中删除模型并渲染视图。我试图在更改模型上的属性时获得相同的效果。有一种简单的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:2)

主干中的约定是视图有一个render方法,你可以触发它作为对任何内置事件,你自己的事件或任何你想要的回调。

通常我在view的initialize方法中有一些这样的代码:

this.listenTo(this.model, 'change', this.render, this);
this.listenTo(this.model, 'remove destroy', this.close, this);

您还可以在更改特定属性时进行渲染调用,以下是在模型的age属性更改时获取视图以重新渲染的示例:

this.listenTo(this.model, 'change:age', this.render, this);

在其他地方,渲染函数将在以下内容后触发:

model.set({ age: 27 });

有关内置骨干事件的更多信息,请查看their documentation

这是sample fiddle of a model change triggering a render

答案 1 :(得分:1)

Marionette的观点有built-in constructs,这使您不必编写此类 Backbone样板

Marionette.CollectionView.extend({
    collectionEvents: {
        "change": "render"
    }
});

Fiddle