2012-10-28 3 views
0

Я новичок в этом, поэтому, пожалуйста, несите меня. Я пытаюсь добавить представление элемента к другому представлению элемента, но метод рендеринга в вложенном элементе представления возвращает объект с отложенным объявлением.Backbone.marionette вложенный ItemView возвращается отложенным вместо el

Вот код:

(function (ns, _, $, Backbone) { 

/////////////////////////////////////////////////////////////////////////////////////// 
// Signup state 
/////////////////////////////////////////////////////////////////////////////////////// 

var SignUp = Backbone.Marionette.ItemView.extend({ 
    template : "#signup-tmpl", 
    events : { 
     'click .signup' : 'signup' 
    }, 

    signup : function() { 
     console.log('signup clicked'); 
     ns.app.layout.app.show(ns.views.register); 
    }, 
    onRender : function() { 
     console.log('On render', this.el); 

     var user = ns.views.user.render(); 
     // user returns an a deferred object 
     // so the code below does not work 

     this.$el.find('#user').html(test.el); 


    } 
}); 

ns.views.signup = new SignUp(); 

}(H5, _, $, Backbone)); 

я сделал немного чтения и исправления я нашел, чтобы сделать вид, но захватить его это свойство эль (Backbone.Marionette nested ItemView either not rendering or rendering "blank" view/template) послесловие. Проблема заключается в том, что «пользователь» возвращает отложенный объект.

Любые идеи относительно того, что здесь происходит?

ответ

1

Вы используете Marionette.Async? Возврат отложенного объекта из рендеринга необходим для облегчения работы Async с шаблонами, данными и рендерингом, которые выполняются асинхронно.

Единственный способ сделать рендер не возвращать отложенное - не использовать Marionette.Async - и FWIW, я рекомендую это решение. Async не следует делать в представлениях, непосредственно, IMO. Он должен обрабатываться рабочим процессом приложения при абстракции на один или несколько шагов выше реализаций представления.

+1

Чувак, вы спасатель жизни! Я использовал в комплекте версию marionette.js из учебника, и она появилась с Marionette.Async. Я заменил этот файл backbone.marionette на один из вашего git-репо, и все работает так, как сейчас. Ура! –

+0

Теперь это устарело :-( –

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

  • Нет связанных вопросов^_^