3 개의 뷰가 있으며 ViewA에는 ViewB 자식 컬렉션이 들어 있으며 각 뷰 B에는 ViewC 하위 컬렉션이 있습니다. 내가 CollectionB의 5 개 항목이있는 경우백본의 내 뷰 배열 길이가 잘못 되었습니까?
ViewA: Backbone.View.extend({
viewBChildren: [],
initialize: function() {
// Do stuff
var self = this;
// Generate children
this.model.get("CollectionB").each(function(b) {
var viewB = new ViewB({
// set properties
});
self.viewBChildren.push(viewB);
console.log(self.viewBChildren.length); // Prints out correctly
});
}
});
ViewB: Backbone.View.extend({
viewCChildren: [],
initialize: function() {
var self = this;
this.model.get("CollectionC").each(function (c) {
var viewC = new ViewC({
// Set properties
});
self.viewCChildren.push(viewC);
console.log(self.viewCChildren.length); // Prints out a running total
});
}
});
그래서, 나는 또한 5 이것은 사실이고 잘 작동 할 viewBChildren.length
을 기대.
제 문제는 viewCChildren.length
을 인쇄 할 때입니다. CollectionB의 각 항목에 5 명의 자녀가있는 경우 5
번을 다섯 번 인쇄해야합니다. 대신 누계 5, 10, 15, 20, 25를 인쇄합니다.
다른 코드는 이러한 하위 모음을 처리하지 않으며 다른 방법으로 아직 수정하지 않습니다. 내보기의 initialize 메소드에서의 두 번의 호출 만 콜렉션에 영향을줍니다.
나는 범위 문제가 있다고 느끼지만, 내가 잘못한 것을 볼 수는 없습니다. 어떤 아이디어? 당신이보기에 정의
나는 당신의 콘솔 진술 자체가 범위를 가지고 있지 않다고 생각한다. ole.console.log (self.viewCChildren.length); ' –
@ NarenSisodiya, 죄송합니다. 실제로 코드를 익명으로 처리하는 동안 오류가있었습니다. 실제 코드에는 'self'가 포함됩니다. – Brandon
작동하는 jsFiddle이 도움이 될 것입니다. – fguillen