我有一个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);
但就像我说的那样,它会对模型中的每个对象进行交互,并且不会产生歧视。
我只需要让人们进入他们自己的输入元素。
所以我的问题是,如何在父视图中对模型进行交互,只挑选人,然后将每个人都写入自己的子视图?
谢谢!
答案 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'}
相反,还有_.pick
:http://underscorejs.org/#pick