私はES6に準拠するように私たちのコードを書き直そうとしており、次の問題が発生しました。AngularJSプロバイダはES6関数宣言を受け入れません
angular.js:63 Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to: Error: [$injector:pget] Provider 'books' must define $get factory method.
これは、このコードにプロバイダオブジェクトを書き込むときです。私はこれにconst books =() => { ... }
を変更
(() => {
const app = angular.module('app', []);
const books =() => { // Error is here
let includeVersionInTitle = false;
this.$get =() => {
const appName = "Book Logger";
const appDesc = "Track which books you read.";
let version = "1.0";
appName = (includeVersionInTitle) ? (appName += " " + version) : appName;
return {
appName: appName,
appDesc: appDesc
}
};
this.setIncludeVersionInTitle = (value) => {
includeVersionInTitle = value;
};
};
app.provider("books", [books]);
})();
、const books = function() { ... }
。それは動作し、そのエラーをスローしません。
私はconst a = function() { ... }
とconst a =() => { ... }
と同じことを考えましたか?なぜこのエラーが出るのですか?
矢印機能は、コンストラクタではありません。それが呼び出されたときに、新しい "インスタンス"になることは決してありません。 – Bergi
いいえ、それらは同じものではありません。重複を参照してください。 – Bergi