无法从一个js到第二个函数调用函数

时间:2017-05-19 09:20:27

标签: javascript angular

我购买了metronic管理模板并试图在角度2中使用它,但我有两个JS文件的错误:app.jslayout.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不是函数

但是如果我在布局函数之外写test.getResponsiveBreakpoint('md');,它就可以工作。

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

1 个答案:

答案 0 :(得分:0)

删除self invoking函数Layout。 即, 而不是这个

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

使用此,

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

更新:

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());
});