在模型

时间:2015-04-22 20:04:30

标签: jquery backbone.js backbone-views

我有一个Backbone父模型/视图,其中包含一堆信息,如:

this.id;
this.title;
this.department;
this.country;
this.zipcode;

但它也包含不同的人:

this.president {memberName: "Joe"};
this.vicePresident {memberName: "Jill"};
this.underwriter {memberName: "Bob"};
this.sponser {memberName: "Yoda"};
this.coSponser {memberName: "Susan"};
this.owner {memberName: "Alice"};
this.informationManger {memberName: "Pascal"};

父视图需要实例化一个子视图,在其中显示每个成员自己的文本字段,如:

 <input type="text" class="{{ memberType }}" value="{{ memberName }}">

所以它想:

 <input type="text" class="president" value="Joe" />
 <input type="text" class="vicePresident" value="Jill" />
 etc...

我考虑过使用&#34; jQuery.each() &#34;移动模型,但这将把所有东西都放在一个元素中。

我最终得到了类似的东西:

this.model.each(this.renderEachMember, this);

但就像我说的那样,它会对模型中的每个对象进行交互,并且不会产生歧视。

我只需要让人们进入他们自己的输入元素。

所以我的问题是,如何在父视图中对模型进行交互,只挑选人,然后将每个人都写入自己的子视图?

谢谢!

1 个答案:

答案 0 :(得分:1)

假设this.president返回一个对象而this.id等等则不这样做。如果您遍历模型并检查是否存在密钥memberName

,该怎么办?

或者将您不想要和使用的密钥列入黑名单:_.omit(object, *keys)(参见http://underscorejs.org/#omit)。在这种情况下,_会被this.model替换。

这是他们的_例子:

_.omit({name: 'moe', age: 50, userid: 'moe1'}, 'userid');
=> {name: 'moe', age: 50}
_.omit({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
  return _.isNumber(value);
});
=> {name: 'moe', userid: 'moe1'}

相反,还有_.pickhttp://underscorejs.org/#pick