var MenuListView = Backbone.View.extend({
el : '#menus',
reset : function() {
var hIndex = this.getTheMenuIndexHighlighting();
_.each(this.model.models[hIndex].attributes.subMenus, function(model, index) {
model.set({highlight : false});
});
});
_。每个都不在上面的代码中旋转。
更新 这是我的子菜单json
[ {title:'Applications',bmUrl:'',id:'1',subMenus:[ {title: 'MsWord', bmUrl : 'msword.com';, id: 1, subMenus: null}, {title: 'MsExcel', bmUrl : 'msexcel.com';, id: 2, subMenus: null}, {title: 'MsPP', bmUrl : 'mspp.com';, id: 3, subMenus: null}, {title: 'MsOneNote', bmUrl : 'msonenote.com';, id: 4, subMenus: null}, {title: 'MsOutlook', bmUrl : 'msoutlook.com';, id: 5, subMenus: null} ],imgUrl:''}]
任何人都可以告诉我原因吗?
将_.each替换为$ .each正在旋转循环,但不会触发相应的模型视图更新方法。
答案 0 :(得分:1)
你应该改变这一行
this.model.models[hIndex].attributes.subMenus
到
this.model.at(hIndex).get("subMenus")
编辑: - 通过这样说我假设subMenus本身就是一个集合
但现在看来它是一个数组并且通过下划线网站 _。each()不可用于数组,并且只能用于集合。其中jquerys可以应用于数组。
http://documentcloud.github.com/underscore/#arrays
链接到下划线网站,注意每个都不包含在数组中
答案 1 :(得分:0)
似乎答案必须通过猜测来解决,因为您发布了少量代码。但这是我的尝试
我认为这应该是
this.model.models[hIndex].attributes.subMenus
转换为this.collection.models[hIndex].attributes.subMenus
,假设this.model引用了一个肯定具有模型属性的集合。
其次,如果您需要索引模型,则集合中有at
方法,因此简化为this.collection.at(hIndex).attributes,subMenus
第三,因为我们使用集合(指subMenus)你现在可以这样做this.collection.at(hIndex).get("subMenus").each(function(subMenu){alert(subMenu.toJSON());})
你的最终代码必须是(有大量的假设)
var MenuListView = Backbone.View.extend({
el: '#menus',
reset: function () {
var hIndex = this.getTheMenuIndexHighlighting();
this.collection.at(hIndex).get("subMenus").each(function (subMenu) {
alert(subMenu.toJSON());
})
});
因为你似乎仍然是BBjs世界的菜鸟。创建一个如下所示的视图实例,您将使上面的代码像jiffy一样工作
var viewInstance = new MenuListView({collection:Menu})
其中Menu是Collection(您使用的)
的实例(new
)