2016-12-29 3 views
0

Ich habe Probleme zu verstehen, wie customized backbone-forms mit Dust.js template anzuzeigen.Backbone-Formen mit benutzerdefinierten Staub Vorlage

Der relevante Teil meines Codes sind hier.

// Index.jx

<head> 
    [...] 
    <script type="text/javascript" src="scripts/jquery.js"></script> 
    <script type="text/javascript" src="scripts/underscore.js"></script> 
    <script type="text/javascript" src="scripts/backbone.js"></script> 
    <script type="text/javascript" src="scripts/backbone-forms.js"></script> 

</head> 

// dashboard.dust

<div id="placeholderForm"></div 
<section id="formTest"> 
      <form> 
        <h1>My Title here</h1> 
        <div data-editor="firstname,lastname,birthday"></div> 
        <hr> 
        <p> 
        some info 
        <div data-fields="address"></div> 
        </p> 
       </form> 
       </section> 

// DahsboardView.js

const 
    UserModel = require('../../models/user-model'), 
    _ = require('underscore'); 

let View = Backbone.Marionette.LayoutView.extend({ 
    template: require('./profile-dashboard.dust'), 


    initialize: function() { 
     let self = this; 
     _.bindAll(this, "render"); 

     this.model.bind('change', this.render); 
     this.model.fetch({ reset: true }); 
     console.log('model', this.model); 


    this.profileForm = new Backbone.Form({ 
     template: this.template, 
     model: this.model, 
     validate: true 
    }); 
     /* 
     this.profileForm = new Backbone.Form({ 
     model: this.model, 
     //template: _.template($('#formTest').html), //this.template, 
     validate: true 
     }).render(); 
     */ 
    }, 

    onRender: function() { 
     console.log('render init'); 
     console.log('form', this.profileForm); 
     let self = this; 
     this.profileForm.render(); // Got problem here because template is not recognise as function or generally just not recognise as valid template 
     $('#placeholder').append(this.profileForm.el); 
     return this; 
    } 

}); 

module.exports = View; 

ich auch versuchen, die Form zu bringen, nachdem das Anfügen Elemente, aber kein Glück.

$('#userInfoForm').append(this.profileForm.render()el); 

Fehler jedes Mal anders, aber meistens kommen, weil this.profileForm sind, ist nicht definiert, wenn in render() und aus meinem Verständnis genannt this.profileForm ist nicht definiert, weil this.template

nicht gültig

Irgendwelche Ideen, wie man richtig mit Rückgrat-Formulare kommunizieren ?

Codepen (nicht aber die Arbeit besser, den Code zu erhalten)

+1

gehören eine [MCVE ]. –

+0

danke für deinen Kommentar @EmileBergeron. Ich habe alle relevanten Teile in meiner Ansicht hinzugefügt und einen CodePen funktioniert nicht, aber zeige zumindest den Code an, der als mein organisiert ist. –

Antwort

0

versuchen Sie nicht, und die Vorlage aus dem DOM zu erhalten .. Sie haben Staub.

this.profileForm = new Backbone.Form({ 
    template: require('./profile-form.dust'), 
    model: this.model, 
    validate: true 
}); 

auch .. lassen Sie dabei die Ansicht manuell .. Backbone-Form ein Rückgrat Ansicht ist .. so ist es nur zu schaffen, eine Region zu Ihrem Layout hinzufügen und

this.getRegion('formRegion').show(this.profileForm); 
Verwandte Themen