谁应该在骨干应用程序中获取模型?

时间:2012-07-24 05:08:44

标签: backbone.js backbone-views

在骨干应用程序中,获取模型的最佳做法是什么?我可以看到以下可能性。

  • 查看调用模型获取方法
  • 其他一些JavaScript代码调用fetch模型?如果是这样,这段代码的时间和结构是什么?这是Backbone中缺少的控制器概念吗?

2 个答案:

答案 0 :(得分:1)

一些最好的实践:

1从应用程序生命的第一个毫秒开始所需的集合和模型应该“自举”(因此不需要获取它们来获取对重要数据的访问权)

因此,当用户从服务器获得正确的页面时,模型和集合应该已经到位(nice example from backbone.js docs

 var ExampleCollection = new Backbone.Collection();
 ExampleCollection.reset(<%= @your_collection_data.to_json() %>); // Or whatever your server-side language requires you to do, this is a ruby example

2其余的可以及时获取

初始化应用程序时不需要的模型和集合可以随时获取,但我认为这样做的逻辑时间是用户表达使用这些模型的意图。例如。用户按下按钮打开需要某些模型/集合的视图 - &gt;获取该集合,用户希望从模型中清除未保存的更改 - &gt;从服务器获取该模型以获取模型的上次保存状态,依此类推。通常,绑定发生的位置是“拥有”模型/集合的视图,因为它将用户操作中继到模型并向用户显示模型的状态。

但是就像它说的那样,Backbone.js对于何时应该获取模型或集合并不严格。它可以在应用程序的任何地方完成,只要确保只在必要时才这样做。

希望这有帮助!

答案 1 :(得分:1)

如果您想成为标准,那么您的视图必须在初始化时监听一次并监听模型的更改事件,并在每次模型更改时重新渲染视图,即全部。 (关于View在完成提取时需要做什么)

如果您按照我所说的标准调用model.fetch(),则不会更新调用fetch的情况。

有些人可以在视图中使用名为load的模块执行以下操作:

load : function(){
  this.model.fetch();
}

其他人可以进行外部提取调用,如下所示:

var myModel = new YourModel();
var myView = new SomeView( {model : model} );
//Probably you could render with the default data in the while model is fetched
myView.render();
model.fetch();