2016-04-09 21 views
0

Also ich versuche, um ein Objekt zu einem mixin passieren und ich habe meine mixin wie folgt:Jade - Objekte und Mixins

mixin summarySection(panelID, bodyID, title, options) 
    div(class='panel panel-default panel-summary') 
     div(id=panelID class='panel-heading' role='tab') 
      h4(class='panel-title')= title 
      div(class='pull-right') 
       if(options.dropdown) 
        select 
         option #{options.dropdown.options} 
       a(role='button' data-toggle='collapse' href='##{bodyID}' aria-expanded='#{options.expanded}' aria-controls=bodyID) + 
     div(id=bodyID class='panel-collapse collapse' role='tabpanel' aria-labelledby=panelID class= options.hasOwnProperty('expanded') ? 'in' : '') 
      div(class='panel-body') 
       if block 
        block 
       else 
        p Content goes here 
      if (options.footer) 
       div(class='panel-footer text-center') 
        a(href='#{options.footer.link}') #{options.footer.text} 

Ich nenne die mixin wie folgt:

+summarySection('panelRecentActivity', 'bodyRecentActivity', 'Recent Activity', {'expanded': 'true', 'dropdown': {'options': 'Last 30 days'}}) 
+summarySection('panelStatements', 'bodyStatements', 'Statements') 

Es funktioniert Gut, wenn ich mit allen Variablen rufe, aber wenn ich keine bestimmte Variable im Objekt übergebe, dann wird ein Fehler ausgegeben, der besagt, dass es undefiniert ist. Zum Beispiel für den zweiten Mixin-Aufruf oben bekomme ich den Fehler Cannot read property 'dropdown' of undefined, weil es nicht definiert ist.

Wie überprüfe ich ordnungsgemäß, ob sie definiert sind und Fehler vermeiden?

Antwort

0

Es ist ratsam, vor der Verwendung zu prüfen, ob die Werte in der Funktion verfügbar sind oder gemischt werden. Sie können bedingte Anweisungen verwenden, um solche Probleme zu vermeiden. Sie können zum Beispiel folgendes tun:

if options && options.footer 
    a(href='#{options.footer.link}') #{options.footer.text}