私のプロジェクトでは、カスタム タイプを作成しましたMyType
。複数の角度モジュールで使用したいのですが、正しい方法がわかりません。私の最初の推測では、カスタム型を公開するサービスを作成することですが、それは少し複雑すぎるように思えます。そのメソッドのデモ コードを以下に示します。ライブ デモはhttp://jsfiddle.net/deafcheese/GS4tN/にあります。
より良い方法はありますか?モジュール内に含まれるものを保持したいので、カスタム型をグローバルとして公開したくありません。
カスタム タイプのサービスを定義します。
//this code is in file myproject.js
(function(angular, undefined) {
//custom type
function MyType(name) {
this.name = name;
}
MyType.prototype.toString = function(){
return '[MyType ' + this.name+ ']';
};
angular.module('myproject', [])
.service('myProjectService', function() {
//hack to expose MyType
this.MyType = MyType
});
}(angular));
最初のコントローラー:
//this code is in file modulea.js
(function(angular, undefined) {
angular.module('myproject.modulea', ['myproject'])
.controller('ControllerA', function($scope,myProjectService) {
var MyType = myProjectService.MyType,
myInstance = new MyType('in controller a');
$scope.myInstance = myInstance;
});
}(angular));
2 番目のコントローラー:
//this code is in file moduleb.js
(function(angular, undefined) {
angular.module('myproject.moduleb', ['myproject'])
.controller('ControllerB', function($scope,myProjectService) {
var MyType = myProjectService.MyType,
myInstance = new MyType('in controller b');
$scope.myInstance = myInstance;
});
}(angular));
更新:サービスの代わりに定数を使用するhttp://jsfiddle.net/deafcheese/GS4tN/1/を作成しました:
angular.module('myproject', [])
.constant('myProjectsModel', {MyType:MyType});
}(angular));
それは問題ですか?一方が他方よりも優れているでしょうか?定数は他のプロバイダーの前にロードされるはずだと思いますが、それは正しいですか?