2016-08-29 6 views
0

私はcicular dependenciesのrequireJSを何回も試しました。私は循環依存のためのさまざまな方法があり、私はQ/Aをstackoverflowで読むが、私は知っていない。私のコードは以下にあり、私は次のエラーに陥っています。このエラーを修正するには?私はここでthis methodを試しました。前もって感謝します。requireJSで機能することを認識する方法は? - Javascript

エラー:

Uncaught TypeError: require(...).fullNameAll is not a function

main.js

define(["require","Employee", "Company"], function (require, Employee, Company) { 
    require("Company").fullNameAll(); 

    }); 

Employee.js

define(["require", "Company"], function(require, Company) { 
    function Employee(firstName, lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    Employee.prototype.fullName = function() { 
     console.log("I'm here"); 
     require("Company").test(); 
    }; 

    return Employee; 
}); 

Company.js:

define(["require", "Employee"], function(require, Employee) { 
    function Company(firstName, lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    Company.prototype.test = function() { 

    console.log("test"); 
    }; 

    Company.prototype.fullNameAll = function() { 
     var Employee = require("Employee"); 
     Employee.fullName(); 

    }; 
    return Company; 
}); 
+2

正しい 'Employee.fullName'の場合、関数ではありませんあなたは 'x.fullName();'が関数 - 基本プロトタイプコーディングであることが分かります –

+0

@ JaromandaX main.jsで言うようにしてみると、起こっていますが、company.jsでは起こっていないし、同じエラーが発生しています。循環依存のためにCompany.js内のEmployee.jsの関数にアクセスしたいと思います。私はどうしますか? – hamdi

+1

私が知っているのは、Employee.fullNameは関数ではありません。私はrequireJSを使用しないので、残りの質問には心配していません。したがって、循環依存関係の詳細については何の助けにもなりません。 –

答えて

0

私は「輸出」の問題を解決しました。 溶液:

main.js

define(["exports", "Company"], function (exports, Company) { 
    var x = new Company.Company("hamdi", "bayhan"); 
    x.fullNameAll(); 
}); 

Employee.js

define(["exports", "Company"], function(exports, Company) { 
    function Employee(firstName, lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    Employee.prototype.fullName = function() { 
     console.log("I'm here"); 
     var c = new Company.Company("qwe","tyu"); 
     c.test(); 
    }; 

    exports.Employee = Employee; 
}); 

Company.js

define(["exports", "Employee"], function(exports, Employee) { 
    function Company(firstName, lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    Company.prototype.test = function() { 

     console.log("test"); 
    }; 

    Company.prototype.fullNameAll = function() { 
     var e = new Employee.Employee("asd","dsa"); 
     e.fullName(); 

    }; 
    exports.Company = Company; 
}); 
関連する問題