2013-02-10 4 views
0

Я пытаюсь создать небольшое приложение, использующее Backbone для визуализации представлений для аутентификации пользователей. Вот скрипка demo http://jsfiddle.net/mjmitche/RRXnK/182/Просмотр не рендеринг при создании из другого представления

При инициализации три ссылки появляются в аутентификации div «span6», помещенной там AuthView.

<div class="span6 authentication"> 
    <div class="row authentication"> 
    <a href="#login" id="login" data-toggle="tab" data-content="login">Login</a> 
    <a href="#signup" id="signup" data-toggle="tab" data-content="signup">Sign up</a> 
    <a href="#retrieve-password" id="retrievePassword" data-toggle="tab" data-content="retrievePassword">Retrieve password</a>  
</div> 
<div class="content" id="auth-content">I want the sign up view to appear in this div if I click on the Sign Up link</div> 
</div> 

Есть три клик, установленные в AuthView

events: { 
     'click .row.authentication a#login': 'login', 
     'click .row.authentication a#signup': 'signup', 
     'click .row.authentication a#retrievePassword': 'retrieve' 
    }, 

Если я нажимаю регистрацию, например, (как в скрипке), он создает RegistrationView и пытается поставить в # auth-content div

signup: function(){ 
     alert("from signup method of auth view"); 
     var signUpView = new UserRegistrationView({model : this.model}).render().el; 
     alert(signUpView); 
     $('#auth-content').html(signUpView); 
    }, 

Однако он не работает. Второе предупреждение, как вы можете видеть на скрипке, не срабатывает. Это вид регистрации.

var UserRegistrationView = Backbone.View.extend({ 

    initialize:function() { 
     _.templateSettings = { 
     interpolate : /\{\{=(.+?)\}\}/g, 
     escape : /\{\{-(.+?)\}\}/g, 
     evaluate: /\{\{(.+?)\}\}/g 
    }; 
     var template = $('#signup_template').html(); 
     this.template = _.template(template); 


    }, 
    render: function(){ 
     alert("render of Registration View"); 
     $(this.el).html(this.template()); 
    } 

}) 

Может кто-нибудь указать, в чем проблема может быть с этой настройкой. Для чего это стоит, JSHint говорит, что код действителен.

ответ

1

Добавить return this; в render() функции UserRegistrationView

Смотрите здесь http://jsfiddle.net/RRXnK/188/

Это потому, что вы цепочки render и доступ к el собственности

Смежные вопросы