我正在使用Backbone.js和CodeIgniter制作一个小型申请表,但我遇到了与控制器连接的问题。
有人可以为我提供完整的代码吗?
我的控制器名称是verfylogin
。我已经从用户那里获取了用户名和密码,我必须将其传递给控制器。
$(function(){
var Credentials = Backbone.Model.extend({});
var LoginView = Backbone.View.extend({
el: $("#login-form"),
events: {
"click #login": "login"
},
initialize: function(){
var self = this;
this.username = $("#username");
this.password = $("#password");
this.username.change(function(e){
self.model.set({username: $(e.currentTarget).val()});
});
this.password.change(function(e){
self.model.set({password: $(e.currentTarget).val()});
});
},
login: function(){
var username= this.model.get('username');
var password = this.model.get('password');
console.log(username,password);
}
});
window.LoginView = new LoginView({model: new Credentials()});
答案 0 :(得分:0)
首先,请read the Backbone documentation,查看示例并测试它们以真正了解它是如何工作的。另外,请查看Backbone.js tag wiki page。
与API(后端)使用的内容无关,Backbone通过包含URL的REST API与后端进行通信。
要将Backbone模型与端点URL链接,请覆盖urlRoot
property。
var Credentials = Backbone.Model.extend({
// Specify the endpoint URL here
urlRoot: "api/endpoint" // relative
// urlRoot: "http://example.com/api/endpoint" // or absolute
});
然后,使用Backbone view's events
hash管理视图中的事件。避免手动绑定jQuery事件。
var LoginView = Backbone.View.extend({
events: {
"click #login": "login",
"change #username": "onUsernameChange",
"change #password": "onPasswordChange"
},
initialize: function() {
// create the model here
this.model = new Credentials();
// cache jQuery object within the view
this.$username = this.$("#username");
this.$password = this.$("#password");
},
login: function() {
// just call save to make a post request with the data.
this.model.save();
},
onUsernameChange: function(e) {
this.model.set({ username: this.$username.val() });
},
onPasswordChange: function(e) {
this.model.set({ password: this.$password.val() });
}
});
var loginView = new LoginView({ el: "#login-form" });
这样,事件回调中可以使用上下文(this
)。避免对el
属性进行硬编码,而更喜欢在初始化新视图实例时传递它。
由于我不使用CodeIgniter,我会将您推荐给其他资源。