問題タブ [angular-factory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
489 参照

jquery - Jquery を使用した Angular - jQuery をファクトリに含めて、そのファクトリを複数のコントローラ間で使用/共有する方法は?

画像ギャラリー スライダー用の長い jQuery 関数があります。私は約5つのディレクティブを持っています(すべて同じスライダーを異なる写真で使用しています)。同じ jQuery コードを 5 つのコントローラーすべてにコピー ペーストしたくなかったので、ファクトリを使用して実行しました。jQuery コードをファクトリーに入れ、各コントローラーでファクトリーを呼び出しました。機能していませんが、理由がわかりません。誰か知ってる?ありがとう!編集: Jquery は角度付きで動作するように含まれています! 問題は jQuery 自体ではなく、ファクトリです。すべてのコントローラーで同じjQueryコードを何度も使用すると、機能します。工場に入れても機能せず、工場をコントローラーに入れることができます。工場:

最初のディレクティブ:

index.html ...

...

0 投票する
0 に答える
335 参照

javascript - angularJs でのコントローラーとサービス間のデータ バインディング

次のことを行う正しい方法を知りたいです。サービス、ファクトリ、およびコントローラーがあります。

サービスには、デフォルトselectedTableで開始されるプロパティがnullあり、ファクトリとコントローラの両方で使用するために、選択したテーブルを格納するために使用されます。サービスにtouchesは、ファクトリとコントローラーで定期的に更新されるというプロパティもあり、そのサービスは次のようになります。

ファクトリは、変数を設定してサービスを使用し、との値を変更するvar data = tablesService.dataメソッドを持っています。selectdata.selectedTabledata.touches

コントローラーはすべてのイベントでテーブルのリストを調べonClick、クリックされたテーブルがそのメソッドを呼び出すことを発見するとselect()、ファクトリ内のメソッドがクリックされたテーブルが selectedTable である場合、touches変数が変更されるため、select()メソッドが呼び出されると、selectedTableget は次のnullようになります。新しい価値。

問題は、変更$scope.touchesしてもサービス内の変数が更新されず、その逆も同様です。これは selectedTable でも発生します。$watch両方$scope.touchesで使用しようとしまし$scope.tablesData.touchesたが、$digest()変更するたびにメソッドが起動しないため、どちら$scope.touchesを呼び出す必要があります$apply()かひどく見え、常に問題を解決するわけではありません。

私のウォッチャーは次のようになります。

この投稿を読んでhttp://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/ $rootScope.$broadcast() 経由でアプリケーションにイベントをブロードキャストできることがわかりました。しかし、それを実装する方法がよくわかりません。おそらく、それは問題を解決するための最良の方法ではありません。