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

ben*_*e89 1 backbone.js

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

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

这是最好的方法吗?

jak*_*kee 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});
Run Code Online (Sandbox Code Playgroud)

此外,如果您不想分配它,您可以这样做

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;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!