登录后,用户被重定向到另一个页面。因此响应Login模型从服务器获取,它尝试设置为另一个模型 第二个模型从第一个模型中正确设置。但是当它到达另一个页面的视图时,它变为空 的模型
var LoginModel = Backbone.Model.extend({
url:'http://localhost:3000/login',
defaults: {
email:"",
password:""
},
parse: function(resp) {
console.log('Model: Got the response back');
return resp;
},
login: function() {
console.log('Model: Login function:'+JSON.stringify(this));
this.save(
{}, {
success: function(resp) {
console.log('success'+JSON.stringify(resp));
dashboardModel.set(resp.result);
window.location = 'templates/dashboard.html'
},
error: function(error) {
console.log('error: '+JSON.stringify(error));
}
});
},
redirect: function() {
console.log('inside redirect method');
}
});
var loginModel = new LoginModel();
var DashboardModel = Backbone.Model.extend({
defaults: {
campaignName:"",
orderedAndGoal:"",
status:"",
endDate:"",
},
parse: function(resp) {
console.log('Model: Got the response back');
return resp;
}
});
var dashboardModel = new DashboardModel();
查看
var DashboardView = Backbone.View.extend({
template:_.template('<div>'+
'<h3><%= campaignName %></h3>'+
'<span><%= orderedAndGoal %>, </span>'+
'<span><%= status %>, </span>'+
'<span><%= endDate %>, </span>'+
'</div>'),
initialize: function() {
this.model.on('change', this.render, this);
},
render: function() {
console.log('what happens here')
var attributes = this.model.toJSON();
this.$el.html(this.template(attributes));
},
});
var dashboardView = new DashboardView({model: dashboardModel});
dashboardView.render();
$(".container").append(dashboardView.el);
答案 0 :(得分:0)
您正在使用window.location = ...
导航到另一个HTML页面。那不行。当浏览器导航到另一个页面时,所有正在运行的代码及其设置的任何变量都会被吹走。 Backbone就是创建“单页面应用程序(SPA)”,其中浏览器只加载了1个页面,然后在运行时动态更改DOM。看一下Backbone.Router
作为理解这一点的起点。您将调用此路由器上的方法将用户移动到另一个“视图”而不是触摸window.location
修复此问题,您的代码应该有效:)