2017-05-19 18 views
1

メトロニック管理テンプレートを購入して角度2で使用しようとしましたが、2つのJSファイルでエラーが発生しました:app.jslayout.jsです。関数を1つのjsから2番目の関数に呼び出すことはできません

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

私はそれを変更し、 '$(ドキュメント).ready(関数(){ レイアウト(); });' が、同じエラー –

+0

ますようウェル 'test'機能のために自己呼び出しを削除しましたか?もしそうなら、 'test'関数を削除しないでください。 – bhadri

関連する問題