나는 기본적인 trello 복제본을 만들고 있습니다. 로그인하는 대신 프로젝트에 슬러그가 발생합니다 (예 : 'www.example.com/1d754b6c')모델보기를 시작하기 전에 대기하는 방법
사용자가 루트를 방문하면 백엔드에 새 슬러그가 생성됩니다. 그런 다음 사용자는 www..com/1d754b6c로 라우트되고, 다른 ajax 호출이 전송되어 프로젝트 ID를 얻습니다. 그러면보기가 시작됩니다. 그러나 내보기 전에 슬러그 -> ID 아약스 호출이 완료되기 시작했습니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
Buckets.Routers.PageRouter = Backbone.Router.extend({
routes: {
'': 'newProject',
':token': 'displayProject'
},
newProject: function() {
new Buckets.Models.Project({});
},
displayProject: function (token) {
var that = this;
var project = new Buckets.Models.Project({token: token});
setTimeout(function(){
new Buckets.Views.showProject({
model: project
});
}, 500);
}
});
project.js
Buckets.Models.Project = Backbone.Model.extend({
url: function() {
return Buckets.BASE_URL + '/api/projects/' + (this.id)
},
initialize: function(options) {
var that = this;
if (options && options.token) {
that.token = options.token
$.ajax({
url: Buckets.BASE_URL + '/' + that.token,
dataType: 'json',
success: function(data, status){
that.id = data;
},
error: function(xhr, textStatus, err) {
console.log(xhr);
}
});
} else {
$.ajax({
url: Buckets.BASE_URL + '/api/projects/new',
dataType: 'json',
success: function(data, status){
that.token = data.token;
that.id = data.id;
Buckets.Routers.router.navigate('/' + that.token, true);
},
error: function(xhr, textStatus, err) {
console.log(xhr);
}
});
}
return this;
},
});