2016-04-09 116 views
0

所以我想一个对象传递给一个mixin,我有我的混入如下:玉 - 对象和混入

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} 

我所说的混入如下:

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

它的工作原理当我打电话给所有的变量,但如果我不传递对象中的某个变量,那么它会抛出一个错误,说它的未定义。例如,对于上面的第二个mixin调用,我得到错误Cannot read property 'dropdown' of undefined,因为它没有定义。

如何正确检查它们是否已定义并避免错误?

回答

0

这是一个很好的做法,在使用它们之前检查函数或mixin中的值是否可用。您可以使用条件语句来避免此类问题。你可以做以下例子:

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