Rud*_*ing 12 backbone.js marionette
在我的骨干.Marionette应用程序我有一个模型,需要一个Id属性来构建它的URL.因此,我通过传递一个Id来创建模型,将其添加到视图中然后获取模型:
model = new Model({_id:id})
view = new View({model:model})
app.content.show(view)
model.fetch()
Run Code Online (Sandbox Code Playgroud)
我希望视图只在获取模型后才开始渲染,但Marionette会立即渲染模型,导致我的模板渲染失败,因为预期的属性不存在.任何解决方法?
我正在尝试做一些类似于接受的答案:将 一个Backbone模型绑定到Marionette ItemView - 阻止.fetch()?
但是,虽然这与骨干有关,但正如答案中所述,Marionette会自动呈现视图.
Jup*_*upo 10
以上两个答案都有效.
这是我喜欢使用的另一种方式(感觉更多的backboney).
将视图直接绑定到模型
完成模型提取后,将运行您指定的函数.这可以通过模型或集合来完成.
var Model = Backbone.Model.extend({});
var model = new Model();
model.fetch();
var View = Marionette.ItemView.extend({
model:model,
initialize: function(){
this.model.bind("sync", this.render, this);// this.render can be replaced
} // with your own function
});
app.region.show(new View);
Run Code Online (Sandbox Code Playgroud)
这也使您可以随时获取.
如果你真的想要在获取模型之前阻止渲染,你应该重新排序你的调用,如下所示:
model = new Model({_id:id});
view = new View({model:model});
model.fetch({success: function () {
app.content.show(view);
});
Run Code Online (Sandbox Code Playgroud)
或者,您应该考虑立即渲染并利用Marionette的空白状态支持.