問題タブ [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.
jquery - Jquery を使用した Angular - jQuery をファクトリに含めて、そのファクトリを複数のコントローラ間で使用/共有する方法は?
画像ギャラリー スライダー用の長い jQuery 関数があります。私は約5つのディレクティブを持っています(すべて同じスライダーを異なる写真で使用しています)。同じ jQuery コードを 5 つのコントローラーすべてにコピー ペーストしたくなかったので、ファクトリを使用して実行しました。jQuery コードをファクトリーに入れ、各コントローラーでファクトリーを呼び出しました。機能していませんが、理由がわかりません。誰か知ってる?ありがとう!編集: Jquery は角度付きで動作するように含まれています! 問題は jQuery 自体ではなく、ファクトリです。すべてのコントローラーで同じjQueryコードを何度も使用すると、機能します。工場に入れても機能せず、工場をコントローラーに入れることができます。工場:
最初のディレクティブ:
index.html ...
...
javascript - angularJs でのコントローラーとサービス間のデータ バインディング
次のことを行う正しい方法を知りたいです。サービス、ファクトリ、およびコントローラーがあります。
サービスには、デフォルトselectedTable
で開始されるプロパティがnull
あり、ファクトリとコントローラの両方で使用するために、選択したテーブルを格納するために使用されます。サービスにtouches
は、ファクトリとコントローラーで定期的に更新されるというプロパティもあり、そのサービスは次のようになります。
ファクトリは、変数を設定してサービスを使用し、との値を変更するvar data = tablesService.data
メソッドを持っています。select
data.selectedTable
data.touches
コントローラーはすべてのイベントでテーブルのリストを調べonClick
、クリックされたテーブルがそのメソッドを呼び出すことを発見するとselect()
、ファクトリ内のメソッドがクリックされたテーブルが selectedTable である場合、touches
変数が変更されるため、select()
メソッドが呼び出されると、selectedTable
get は次の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() 経由でアプリケーションにイベントをブロードキャストできることがわかりました。しかし、それを実装する方法がよくわかりません。おそらく、それは問題を解決するための最良の方法ではありません。