[새로운 튜토리얼]
일정에 따라 작업 응용 프로그램 사례가 있습니다.
백본 호출 컨트롤러 메서드보기
1) 사용자 클릭 일정 변경 버튼. [보기에서]
2) 사용 가능한 일정을 가져옵니다. [컨트롤러]
3) 사용자 일정 중 하나를 선택합니다. [보기에서]
4) 게시 서버에 일정 목록을 업데이트했습니다. [컨트롤러]
5) 다시 렌더링보기
(1), (3)이 (가) 켜져 있고 (2), (4)가 컨트롤러에 있습니다.
뷰 -> 경로 -> 컨트롤러를 라우트해야합니다. 각 단계마다.
이것은 컨트롤러에 이벤트를 전달하는 올바른 방법입니다. 유효한 더 나은 방법 있는가 ??
Backbone.Events를 사용하는 경우입니다.
폴더 구조. [필요, 백본 사용]
├───app
│ ├───managers
│ ├───models
│ ├───utils
│ └───views
├───lib
└───tpl
일정 모델.
Schedule = Backbone.Model.extend({
initialize: function() {
console.log("Schedule model initialized");
}
}),
ScheduleView :
events : {
"click #cancel_login_trip" : "cancelLoginTrip",
"click #cancel_logout_trip" : "cancelLogoutTrip",
},
cancelLoginTrip : function(){
var tripindex = this.model.get('previousIndex')+1;
tripindex = "login_"+tripindex;
Backbone.history.navigate('schedule/cancel/'+tripindex, {trigger:true,replace:true});
},
경로
cancelSchedule : function (tripindex) {
var t = tripindex.split("_");
var dic={};
dic.tripindex = parseInt(t[1]);
dic.triptype = t[0];
scheduleManager.cancelSchedule(dic);
},
일정 관리자 [컨트롤러] :
가this.cancelSchedule = function(dic){
console.log("inside cancel schedule");
console.log(dic);
index = dic.tripindex;
scheduleDaysize = configManager.getFeatureConfig(Constants.SCHEDULE,Constants.SCHEDULE_DAYS_AFTER);
myAnalyticsLogger.debug(LogMessages.REQUEST_TO_DISPLAY_SCHEDULE + index);
if(index<0){
var errorText= 'past schedule can not be viewed ';
errorModel.set({errorText:errorText,response:""});
return;
}
if(index >= scheduleCollection.length && scheduleDaysize != null){
var errorText= 'this schedule can not be cancelled ';
errorModel.set({errorText:errorText,response:""});
return;
}
updateScheduleOnServer(scheduleCollection.length,
scheduleCollection.length+scheduleDaysize);
};
1. 쇼 일부 코드의 부분은 모든 응용 프로그램에 대한 글로벌 또는 특정 할 수 있습니다 글로벌 이벤트 모델
통해 것 2. 백본에 '컨트롤러'라는 것이 있다는 것을 결코 알지 못했습니다! –
업데이트 질문 – shifu
백본에서 '컨트롤러'로는 아무 것도 없으므로 컨트롤러 코드를 이동하여보기 밖으로 이벤트를 전달할 필요가 없습니다. –