2016-04-09 113 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}