Backbone JS的新功能,我需要知道在模型中的集合中循环并设置模型属性的“正确”方法。
我的模特看起来像这样:
var mediaItem = Backbone.Model.extend({
});
var mediaItems = Backbone.Collection.extend({
model: mediaItem
});
var story = Backbone.Model.extend({
initialize: function () {
this.MediaItems = new mediaItems(this.get('MediaItems'));
this.MediaItems.parent = this;
}
});
我想要做的是遍历给定故事中的MediaItem并设置每个故事的宽度和高度。如果我这样做......
storyInstance.MediaItems.each(function (mediaItem) {
mediaItem.set('Width', 200);
mediaItem.set('Height', 100);
});
...然后storyInstance.MediaItems属性中的MediaItem模型被正确更新,但storyInstance.attributes.MediaItems中的对象则没有。它是我随后在Story模型上调用JSON()时使用的属性树。
我可以修改上面的内容来循环遍历属性,但我觉得我已经设置了错误的模型,或者有更标准的方法来做这个?
感谢。
答案 0 :(得分:0)
可能初始化除您预期之外的其他内容。
以下代码
var story = Backbone.Model.extend({
initialize: function () {
this.MediaItems = new mediaItems(this.get('MediaItems'));
this.MediaItems.parent = this;
}
});
应该是
var story = Backbone.Model.extend({
initialize: function () {
this.MediaItems = this.get('MediaItems');
this.MediaItems.parent = this;
}
});
和实例化项目应该通过实例化故事模型来完成,如
var storyInstance = new story({
MediaItems: new mediaItems()
})
然后
story.MediaItems.each(function (mediaItem) {
mediaItem.set('Width', 200);
mediaItem.set('Height', 100);
});
会导致更新
答案 1 :(得分:0)
编辑:没想到这是来自' 13。它出现在标记为backbone.js的问题中,直到现在我才注意到日期/时间。
尝试在initialize部分检查Array的实例。
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 7 4 5
1 2 7 4 5