2015-08-04 9 views
0

, попадающий в AmpersandJs, и имеющий большой шоу-стоп, не выясняя, почему моя подзадача не представляет собой разметку.AmpersandJs: Render sub-view

Мой MainView.render, работает как следует:

render: function() { 
    BaseView.prototype.render.apply(this, arguments); 
    this.collectionView = this.renderCollection(this.collection, HSEventView, '.item-container'); 

    this.renderSubview(new HSEventEditView({ 
    action: 'create' 
    }), '.create-event'); 

    return this; 
}, 

Далее, мой SubView.render (HSEventEditView):

render: function() { 
    this.renderWithTemplate(); 

    this.form = new EditForm({ 
    el: this.query('.edit-form'), 
    submitCallback: function (data) { 
     debug('submit', data); 
    } 
    }); 

    this.registerSubview(this.form); 
    debug('render.form.el', this.form.el) 
} 

И, наконец, мой FormView:

module.exports = FormView.extend({ 
    initialize: function() { 
    debug('initialize', this.el) 
    }, 

    autoRender: true, 

    fields: function() { 
    debug('fields!') 


    var fields = [ 
     new InputView({ 
     label: 'Name', 
     name: 'name', 
     value: utils.getDotted(this, 'model.name'), 
     placeholder: 'Name', 
     parent: this 
     }) 
    ]; 

    debug('fields', fields) 
    } 
}); 

MainView и подвид оказывает отлично, но DOM-узел 'div.edit-form', где for m разметка должна быть, пуста.

Я пробовал все варианты включения подсмотра, который я мог бы выкопать, но, очевидно, я ослеплен.

Спасибо!

PS! Вот обработанная разметка:

<section class="page"> 
    <h2>Events collection</h2> 
    <hr> 
    <div class="tools">(Tools comming...)</div> 
    <hr> 
    <div class="item-container events"> 
    <div class="item event"> 
     <h3>Event: <span data-hook="name">Event 1</span></h3> 
    </div> 
    </div> 
    <hr> 
    <div class="create-event"> 
    <div class="item event"> 
     <h3>Create event: <span data-hook="name"></span></h3>   
     <div class="edit-form"></div> 
    </div> 
    </div> 
</section> 

ответ

0

Поскольку fields является функцией, вам нужно возвратить поля. В вашем Formview:

fields: function() { 
    debug('fields!') 


    var fields = [ 
    new InputView({ 
     label: 'Name', 
     name: 'name', 
     value: this.model.name, 
     placeholder: 'Name', 
     parent: this 
    }) 
    ]; 

    debug('fields', fields) 

    // need to return the fields you've declared 
    return fields; 
} 
+0

Да, действительно. Я скопировал код из середины редактирования, поэтому у меня это было исправлено, но я приму свой ответ. Основная проблема объясняется здесь: https://github.com/AmpersandJS/ampersand-form-view/issues/49 – Gnimmelf

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

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