2016-04-09 9 views
0

だから私はミックスインにオブジェクトを渡すためにしようとしていますし、次のように私は私のミックスインを持っている:ジェイド - オブジェクトとミックスイン

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') 

それは動作します私がすべての変数を呼び出すときには問題ありませんが、オブジェクト内の特定の変数を渡さないと、定義されていないというエラーがスローされます。たとえば、上記の2回目のmixin呼び出しの場合、定義されていないため、エラーCannot read property 'dropdown' of undefinedが返されます。

定義済みかどうかを正しくチェックしてエラーを回避するにはどうすればよいですか?

答えて

0

値が関数内で使用可能かどうか、または使用する前にミックスインを確認することをお勧めします。このような問題を回避するには、条件文を使用できます。たとえば、次のようにすることができます。

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