尝试使用nodejs和backbone构建应用程序。
直到现在我正在使用快速路由运行节点js服务器。这些简单的nodejs路由只是将数据发送回Backbone模型。
我正在运行骨干应用程序,直接打开html文件到浏览器并在模型中定义节点js url。
现在问题出现在我尝试在应用程序中实现Backbone Router
时。如果我直接打开html文件,它将无法正常工作
问题是如何将骨干应用程序部署到节点服务器?
目录结构:
app
--index.html
--view
----appView.js
--model
----appModel.js
--server
----server.js
--controller
----router.js
appView.js
var LoginForm = Backbone.View.extend({
template:_.template('<input type="text" id="email" name="email" />'+
'<input type="password" id="password" name="password" />'+
'<input type="button" id="login" value="Login"/>'),
events: {
'click #login':'goIn'
},
initialize: function() {
this.model.on('change', this.render, this);
},
goIn: function() {
console.log(this.$('#password').val());
this.model.set({"email":this.$('#email').val(), "password":this.$('#password').val()});
this.model.goIn();
this.render();
},
render: function() {
var attributes = this.model.toJSON();
this.$el.html(this.template(attributes));
}
});
模型
var LoginFormModel = Backbone.Model.extend({
defaults: {
email:"",
password:""
},
goIn: function(req, resp) {
console.log('hey whats up?'+JSON.stringify(this));
//this.save();
}
});
var loginModel = new LoginFormModel();
节点服务器
var http = require('http'),
express = require('express');
app.get('/', function(req, res){
res.send('Hello App');
});
答案 0 :(得分:0)
您必须使用navigate功能:
var Router = Backbone.Router.extend({
routes : {
"": "home", // will be
"login" : "login"
},
home: function() {
// your home page
}
login: function() {
var loginModel = new LoginModel();
var loginView = new LoginView({model: loginModel});
loginModel.fetch();
}
})
new Router();
Backbone.history.start();
当您想要访问登录页面时,无论您身在何处:
Backbone.history.navigate('login', { trigger: true });