我正在为我的主干应用程序登录并遇到一个问题,如果不调用服务器,我不知道如何解决。这在我的团队中引发了一场关于其他人如何处理这种事情的讨论,因为我们认为我们将在未来遇到类似的事情。
今天是星期五,我可能只是脑死亡,但这里...
我们有一个用户模型。View 的 login 方法创建一个新的用户模型并调用它的 login 方法,传入用户的凭据和一个回调函数,该函数具有一个包含用户信息的对象。
这是我们视图的登录方法:
login: function(event){
event.preventDefault();
var user = new App.User;
user.login($('#username').val(), $('#password').val(),
(function(msg) {
// success callback
if (msg.loggedIn) {
console.log("Authenticate successful: " + JSON.stringify(msg));
var data = { user : msg, bob : "bob", trigger:true };
console.log("Prepared data: " + JSON.stringify(data));
App.router.navigate('home',data);
} else {
console.log("Authenticate unsuccessful: " + JSON.stringify(msg));
}
}).bind(this),
function(msg) {
// failure callback
console.log("Authenticate communication failure: " + JSON.stringify(msg));
alert("Communication fail!");
App.router.navigate('login',{trigger:true});
});
}
我们试图弄清楚的是如何最好地使这个模型数据可用于另一条路线(家),以便我们可以在视图中使用它。
所以我有这个路由器:
routes: {
'': 'home',
'home': 'home',
'login': 'login'
},
home: function(data){
console.log(data);
}
一旦我们登录了用户,我们需要更新路由并访问该用户的数据,但不希望返回服务器来获取它。
我很担心,因为我们正在构建一种“向导”,用户可能需要通过一些步骤向前和向后移动,我不想每次浏览应用程序时都必须点击服务器,但它看起来像我们要么需要将内容保存到全局变量(不想这样做),要么每次都返回服务器。我相信其他人也不得不处理类似的问题。只是寻找一些见解。
谢谢!