간단한 프로젝트를 구현하여 Backbone.js 라이브러리를 배우기 시작했습니다. 튜토리얼을보고 나면 아래 코드와 같은 코드가 생성됩니다. 나는 자바 스크립트 개발에 익숙하지 않기 때문에 완벽하지는 않을지도 모른다는 것을 알고있다.자바 스크립트에서 전역 변수 업데이트하기
아래에서 API에서 국적 목록을 가져온 다음 특정 국가의 학생 수를 확인합니다. 이것은 당분간 분명하지만 문제는, 나는 두 번째 컬렉션 가져 오기 기능에 카운터가있는 이유 인 국적 별 전체 학생을 확보해야한다는 것입니다. 내가 직면하고있는 문제는 자바 스크립트에 관한 것입니다. 기본적으로 "전체"를 전역으로 정의하고 로컬로 업데이트하는 것은 내가해야 할 일입니다. 이 스레드와 비슷한 많은 스레드가 있지만 솔직히 말해서 내 솔루션을 재현 할만큼 충분히 이해하지 못했습니다. 다시 한번, 내 질문은이 코드를 다시 엔지니어링하여 "total"변수의 값을 로컬로 업데이트 한 다음 내부 인출 함수 외부에서 업데이트 된 결과를 사용할 수있는 방법입니다. 당신의 답변과 조언에 감사드립니다. 미리 감사드립니다. 설계대로 AJAX 호출이 작동하는 경우
$.ajaxSetup({
crossDomain : true,
cache : false,
contentType : "application/json",
dataType : "json"
});
var baseURL = "http://lucalongo.eu:80/courses/2014-2015/questionnaireDIT/app/index.php";
var mModel = Backbone.Model.extend({});
var cNationality = Backbone.Collection.extend({
model: mModel,
url: this.baseURL + "/nationalities"
});
var cStudent = Backbone.Collection.extend({
model : mModel,
initialize : function(models, options) {
this.url = "http://lucalongo.eu:80/courses/2014-2015/questionnaireDIT/app/index.php/students/nationality/" + options.id;
}
});
var vView = Backbone.View.extend({
render: function(){
var total = 0;
this.collection = new cNationality();
this.collection.fetch({
success: function(c){
_.each(c.models, function(col) {
var nationalDesc = col.toJSON().description;
var nationalID = col.toJSON().id;
var studentNationality = new cStudent([], {id : nationalID});
studentNationality.fetch({
success: function(c){
//console.log(nationalDesc + ": " + c.length);
total = total + c.length;
console.log(total);
}
});
});
}
});
console.log("Total:" total); // still displays 0
}
});
var v = new vView();
v.render();
Backbone.history.start({pushState: true});
그래서 배달 피자를 주문합니다. 피자가 배달되기 전에 피자를 먹으려 고합니다. 그것은 비동기식으로 설정되기 전에 값을 읽는 중입니다. 그래서 성공 방법이 있습니다. – epascarello
그래서 내가이 질문을 게시 한 이유는 무엇입니까? 나는이 코드를 작동시키기 위해이 코드를 어떻게 바꿀 수 있는지 배우고 싶습니다. 감사합니다 –
약속을 들여다보십시오. – epascarello