2017-05-19 134 views
1

我買了metronic管理模板並試圖在角度2中使用它,但是我有兩個JS文件出錯:app.jslayout.js不能從一個js調用函數到第二個函數

app.js內容:

var test = function() { 
    /* ... */ 
    return { 
     init: function(){ /* ... */ }, 

     getResponsiveBreakpoint: function(size) { 
      // bootstrap responsive breakpoints 
      var sizes = { 
       'xs': 480,  // extra small 
       'sm': 768,  // small 
       'md': 992,  // medium 
       'lg': 1200  // large 
      }; 

      return sizes[size] ? sizes[size] : 0; 
     } 
    } 
}(); 

jQuery(document).ready(function() { 
    test.init(); // init metronic core componets 
}); 

layout.js內容:

var Layout = function() { 
    var resBreakpointMd = test.getResponsiveBreakpoint('md'); 
    /* ... */ 

    return { 
     init: function() { /* ... */ } 
    } 
}(); 

$(document).ready(function() { 
    Layout.init(); // init metronic core componets 
}); 

layout.js返回此錯誤:

test.getResponsiveBreakpoint is not a function

但如果我寫test.getResponsiveBreakpoint('md');之外佈局的功能,它的工作原理。

console.log(test.getResponsiveBreakpoint('md')); 
var Layout = function() {/* ... */} 
+0

如果console.log正常工作,那麼您的瀏覽器正在欺騙您:v –

+0

當然,它會失敗,因爲'test.getResponsiveBreakpoint'還不是一個函數。它不會像當前的佈局結構一樣。 – dfsq

+0

你是如何加載js文件的? – PierreDuc

回答

1

的功能Layout刪除self invoking。 即, 代替此

var Layout = function() { 
    ... 
    //Your Code... 
}(); 

使用此的,

var Layout = function() { 
    ... 
    //Your Code... 
}; 

UPDATE:

app.js

var test = function() { 

     return { 
       init:function(){ 
        return 100; 
       }, 

      getResponsiveBreakpoint: function (size) { 
      var sizes = { 
      'xs': 480,  // extra small 
      'sm': 768,  // small 
      'md': 992,  // medium 
      'lg': 1200  // large 
     }; 

      return sizes[size] ? sizes[size] : 0; 
     } 
    } 
}(); 

layout.js

var Layout = function() { 
    var resBreakpointMd = test.getResponsiveBreakpoint('xs'); 
    return{ 
     init:function(){ 
      return resBreakpointMd; 
     } 
     }  
}; 

$(document).ready(function() { 
    console.log(Layout().init()); 
}); 
+0

是的,我知道,app.js首先加載,但錯誤仍然存​​在 –

+0

我改變了它,並調用它在 '$(文件)。就緒(函數(){ 佈局(); });' 但同樣的錯誤 –

+0

你刪除自身調用了'test'功能井?如果是這樣,不要刪除'測試'功能。 – bhadri

相關問題