0
을 유발하지 않는 기능을 초기화보고 그것을 볼 수 있습니다BackboneJS 내가 백본 응용 프로그램이
/**
* Event Handler for User
*
* date: 21-02-2014
* version: 0.1
*
*/
(function($, $$, window, document, utilities){
// Extends my object from Backbone events
window.UserHandler = Backbone.View.extend({
events: {
'click .login-button': 'login'
, 'click .logout-button': 'logout'
, 'click .register-button': 'register'
}
, initialize: function(){
_.bindAll(this, 'login', 'register', 'onLoginComplete', 'onRegisterComplete');
this.collection = new UserList();
this.user = new UserModel();
this.collection.bind('add', this.appendUser);
console.log('view is initialized');
}
, login: function(e){
alert('hello');
var data = utilities.formToJson('#login-form')
, required = [ 'username', 'password' ]
, user = new UserModel()
, errors = [];
// Validate the fields
utilities.validateEmptyFields(required, data, errors);
if(errors.length > 0){
utilities.showNotification('error', 'Llena todos los campos para ingresar a tu cuenta', 0);
return;
}
// Validate email format
if(! utilities.isEmail(data.username)){
utilities.showNotification('error', 'Escribe un email válido.', 0);
return;
}
// shows the progress screen
utilities.onProgress('Iniciando Sesión');
user.set(data);
user.login(this.onLoginComplete);
}
, logout: function(){
window.localStorage.removeItem('user');
window.location = 'index.html';
}
, onLoginComplete: function(data){
utilities.offProgress(0);
if(data.status == 500){
utilities.showNotification('error', data.message, 4000);
window.localStorage.removeItem('user');
return;
}
// create a cookie session to save the user data
var model = new UserModel()
model.set(data.user);
window.localStorage.setItem('user', JSON.stringify(model));
window.location = 'panel-inicio.html';
}
/**
* Register user
*
*/
, register: function(){
var data = utilities.formToJson('#login-form')
, required = [ 'username', 'password' ]
, user = new UserModel()
, errors = [];
// Validate the fields
utilities.validateEmptyFields(required, data, errors);
if(errors.length > 0){
utilities.showNotification('error', 'Llena todos los campos para crear tu cuenta', 0);
return;
}
// Validate email format
if(! utilities.isEmail(data.username)){
utilities.showNotification('error', 'Escribe un email válido.', 0);
return;
}
// shows the progress screen
utilities.onProgress('Registrando');
user.set(data);
user.register(this.onRegisterComplete);
}
, onRegisterComplete: function(data){
utilities.offProgress(0);
console.log(data);
if(data.status == 500){
utilities.showNotification('error', data.message, 4000);
window.localStorage.removeItem('user');
return;
}
this.login();
}
, appendUser: function(user){
console.log(user.get('username'));
}
});
})(jQuery, Quo, this, this.document, this.Misc, undefined);
그래서 초기화 기능이 트리거되지 않습니다! 내가 도대체 뭘 잘못하고있는 겁니까? 내가 전화를 걸거나 잘못된 견해로 의견을 말하고 있습니까? 나는 다른 파일들 Model과 Collection과 그들의 초기화 함수가 완벽하게 작동한다. 당신이 (가) UserHandler
"클래스"잘 정의하고
<script type="text/javascript" src="assets/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="assets/js/underscore-min.js"></script>
<script type="text/javascript" src="assets/js/backbone-min.js"></script>
<script type="text/javascript" src="assets/js/misc.js"></script>ç
<!-- Backbone API -->
<script type="text/javascript" src="assets/js/models/user.js"></script>
<script type="text/javascript" src="assets/js/collections/user.js"></script>
<script type="text/javascript" src="assets/js/events/user.js"></script>
덕분에, 나는 당신의 솔루션을 시도 할 것이다. 그러나, 나는 당신처럼 내가보기를 인스턴스화했다 ...하지만 난 거 변경을 기억합니다. :) – Brian
난 그냥 아마 당신을 실현 @ 브라이언 'Backbone.View.extend ({}) '를 괄호 안에 감싸서 작동시켜야합니다. 답변이 업데이트되었습니다. – redmallard