これはおそらく私の経験不足と基本的なものを見落としているためですが、SO、angulajsのチュートリアルとガイド、およびGoogleの間で、従うことができる説明や例が見つかりません。
ファクトリを正常に作成し、コントローラーとフィルターで使用しましたが、どちらか一方のみです。両方をモジュールに追加しようとすると、Error: Unknown provider: memberFactoryProvider <- memberFactory
私のコードは以下にありますが、いくつかの質問があります:
1.ファクトリとサービス (または複数のファクトリ/フィルタ) をモジュールに追加する場合、単一のファクトリを使用する場合と同じ方法でそれらを作成するだけで十分です。つまり、次のように宣言された多数のファクトリがある場合:
'use strict';
angular.module('testApp', [])
.factory('factory1', function () {
var obj = {};
obj.text = "This is a test";
return obj;
});
angular.module('testApp', [])
.factory('factory2', function () {
var obj = {};
obj.text = "This is another test";
return obj;
});
を使用してapp.jsに2つを含めるだけで十分ですかangular.module('testApp', ['factory1', 'factory2']);
2.フィルター/ファクトリーを作成するときにアプリ名を追加するというオンラインの投稿に気付きました。
angular.module('testApp', [])
.factory('testApp.factory1', function () {
var obj = {};
obj.text = "This is a test";
return obj;});
これは必須ですか、それとも個人的な好みですか?
最後に、以下はすべてのコードです。上記のように、すべて個別に機能しますが、それらを組み合わせようとすると、上記のエラーが発生します。アドバイスやヘルプをいただければ幸いです
index.html
<!DOCTYPE html>
<html data-ng-app="testApp">
<head>
<title>prototype</title>
<script type="text/javascript" src="jquery-2.0.3.min.js"></script>
</head>
<body>
<div data-ng-controller="myController">
<br/>
<div data-ng-repeat="n in [] | range:5">
<div data-ng-repeat="">{{test}}</div>
</div>
</div>
<br/>
<br/>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/services.js"></script>
<script type="text/javascript" src="js/filters.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
</body>
</html>
App.js
'use strict';
angular.module('testApp', ['memberFactory', 'range']);
services.js
'use strict';
angular.module('testApp',[])
.factory('memberFactory', function(){
var obj = {};
obj.text = "This is a test";
return obj;
});
フィルター.js
'use strict';
angular.module('testApp',[]).filter('testApp.range', function() {
return function(input, total) {
total = parseInt(total);
for (var i=0; i<total; i++)
input.push(i);
return input;
};
});
controllers.js
function myController($scope, memberFactory){
$scope.test= memberFactory.text;
}