タグ付けされた質問 「angularjs-service」



9
AngularJS:ファクトリの代わりにサービスを使用する場合
ここで我慢してください。AngularJS:サービスvsプロバイダーvsファクトリーのような他の答えがあることを知っています。 しかし、いつ工場でサービスを利用するかはまだわかりません。 ファクトリーは、複数のコントローラーから呼び出すことができる「共通の」関数を作成するために一般的に使用されていることがわかります。共通のコントローラー関数の作成 Angularのドキュメントはサービスよりもファクトリを好むようです。さらに混乱を招くファクトリーを使用するとき、彼らは「サービス」にさえ言及します!http://docs.angularjs.org/guide/dev_guide.services.creating_services では、いつサービスを利用するのでしょうか? サービスでしかできない、またははるかに簡単なことはありますか? 舞台裏で起こっている何か違うことはありますか?パフォーマンス/メモリの違い? ここに例があります。宣言の方法を除いて、それらは同じように見え、なぜ私が一方を他方に対して行うのか理解できません。http://jsfiddle.net/uEpkE/ 更新: Thomasの回答から、サービスがより単純なロジック用であり、プライベートメソッドを使用したより複雑なロジック用のファクトリーであることが示唆されているため、以下のフィドルコードを更新し、どちらもプライベート関数をサポートできるようです? myApp.factory('fooFactory', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi '+foo; } return { setFoobar: function(foo){ addHi(foo); }, getFoobar:function(){ return fooVar; } }; }); myApp.service('fooService', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi '+foo;} this.setFoobar …

10
Angular.jsでさまざまな環境を構成するにはどうすればよいですか?
さまざまな環境の構成変数/定数をどのように管理しますか? これは例であるかもしれません: 私の残りのAPIはで到達可能ですがlocalhost:7080/myapi/、Gitバージョン管理下で同じコードで作業している私の友人は、彼のTomcatにAPIをデプロイしていますlocalhost:8099/hisapi/。 次のようなものがあるとします。 angular .module('app', ['ngResource']) .constant('API_END_POINT','<local_end_point>') .factory('User', function($resource, API_END_POINT) { return $resource(API_END_POINT + 'user'); }); 環境に応じて、APIエンドポイントの正しい値を動的に注入するにはどうすればよいですか? PHPでは通常、このようなことをconfig.username.xmlファイルで行い、基本構成ファイル(config.xml)を、ユーザーの名前で認識されるローカル環境構成ファイルとマージします。しかし、JavaScriptでこの種のことを管理する方法がわかりませんか?

10
AngularJS:サービスプロパティにバインドする正しい方法
AngularJSでサービスプロパティにバインドする方法のベストプラクティスを探しています。 AngularJSを使用して作成されたサービスのプロパティにバインドする方法を理解するために、複数の例に取り組みました。 以下に、サービスのプロパティにバインドする方法の2つの例を示します。どちらも機能します。最初の例では基本的なバインディングを使用し、2番目の例では$ scope。$ watchを使用してサービスプロパティにバインドしました これらの例のいずれかがサービスのプロパティにバインドするときに推奨されますか、それとも私が知らない、推奨される別のオプションがありますか? これらの例の前提は、サービスがそのプロパティを「lastUpdated」と「calls」を5秒ごとに更新する必要があることです。サービスのプロパティが更新されると、ビューにこれらの変更が反映されます。これらの例はどちらも正常に機能します。それを行うより良い方法があるのだろうか。 基本的なバインディング 次のコードは、ここで表示および実行できます。http://plnkr.co/edit/d3c16z <html> <body ng-app="ServiceNotification" > <div ng-controller="TimerCtrl1" style="border-style:dotted"> TimerCtrl1 <br/> Last Updated: {{timerData.lastUpdated}}<br/> Last Updated: {{timerData.calls}}<br/> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script> <script type="text/javascript"> var app = angular.module("ServiceNotification", []); function TimerCtrl1($scope, Timer) { $scope.timerData = Timer.data; }; app.factory("Timer", function ($timeout) { var data = { …

7
AngularJSサービスにモックを挿入する
AngularJSサービスを作成しており、それを単体テストしたいと思います。 angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); 私のapp.jsファイルにはこれらが登録されています: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) DIが機能していることをテストできます。 describe("Using the DI framework", function() { beforeEach(module('fooServiceProvider')); beforeEach(module('barServiceProvider')); beforeEach(module('myServiceProvder')); var service; beforeEach(inject(function(fooService, barService, myService) { service=myService; })); it("can be …

24
Angularjs:エラー:[ng:areq]引数 'HomeController'は関数ではないため、定義されていません
これは、angularjsを使用してサービスファイルを作成し、コントローラーにサービスを追加するための私のデモです。 私のデモには2つの問題があります。 1つは、このエラーが発生する<script src="HomeController.js">前に置いたときです<script src="MyService.js">。 エラー:[ng:areq]引数 'HomeController'は関数ではないため、定義されていません もう1つは、次のエラーが発生する<script src="MyService.js">前に置いたときです<script src="HomeController.js">。 エラー:[$ injector:unpr]不明なプロバイダー:MyServiceProvider <-MyService 私の情報源: ファイルIndex.html: <!DOCTYPE html> <html > <head lang="en">…</head> <body ng-app="myApp"> … <div ng-controller="HomeController"> <div ng-repeat="item in hello">{{item.id + item.name}}</div> </div> <script src="Scripts/angular.js"></script> <script src="Scripts/angular-route.js"></script> <!-- App libs --> <script src="app/app.js"></script> <script src="app/services/MyService.js"></script> <script src="app/controllers/HomeController.js"></script> </body> </html> ファイルHomeController.js: …

4
angularjsで、応答が$ httpリクエストから来るまで待つ方法は?
複数のページでRESTfulサービスからのデータを使用しています。だから私はそのために角度工場を使用しています。そのため、サーバーからデータを1回取得する必要があり、その定義されたサービスでデータを取得するたびに取得しました。グローバル変数のように。これがサンプルです: var myApp = angular.module('myservices', []); myApp.factory('myService', function($http) { $http({method:"GET", url:"/my/url"}).success(function(result){ return result; }); }); 私のコントローラーでは、このサービスを次のように使用しています: function myFunction($scope, myService) { $scope.data = myService; console.log("data.name"+$scope.data.name); } 私の要件に応じて、それは私にとってはうまくいきます。しかし、ここでの問題は、ウェブページにリロードすると、サービスが再び呼び出され、サーバーを要求することです。「定義されたサービス」に依存する他の関数が実行されると、「何か」が未定義のようなエラーが発生します。したがって、サービスが読み込まれるまでスクリプトで待機したいと思います。どうやってやるの?とにかくそれはangularjsでそれをしますか?



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.