Backbone - 将两个集合交给一个视图

时间:2012-12-04 09:51:45

标签: backbone.js

我有一个Backbone视图,例如,编辑配置文件视图,我将视图传递给我的用户模型实例。但是,我想让用户从选择下拉列表中选择自己喜欢的社交网络。现在,这个社交网络列表由他们填充在应用程序的另一个区域。

我的问题是,1。存储这些社交网络的最佳方式是什么?每个模型,所以社交网络的集合? 2.然后我将一个集合(社交网络)和一个模型(用户)传递给我的编辑个人资料视图吗?

这是最好的方式吗?

1 个答案:

答案 0 :(得分:8)

基本上你可以使用initialize -function来做这种事情。您可以将另一个作为模型或集合传递,另一个作为参数传递,您只需要保存对它的引用。您还可以为视图提供模型和集合。

var EditProfileView = Backbone.View.extend({
  initialize: function(options) {
    this.user = options.user:
    // or do this
    this.socialNetworks = options.socialNetworks; 
  }
});

// when creating an instance do
var foo = new EditProfileView({user: someUser, collection: socialNetworks});
// or
var foo = new EditProfileView({model: someUser, socialNetworks: socialNetworks});
// also this will work as well
var foo = new EditProfileView({model: someUser, collection:socialNetWorks});

此外,如果您不想分配它,您可以执行

var foo = new EditProfileView({user: someUser, socialNetworks: socialNetworks});
// the options given to a view on initialization 
// are saved to an options property in the view
// so the following should hold true
foo.options.user === someUser;
foo.options.socialNetworks === socialNetworks;

希望这有帮助!