0

分離のために独自のコントローラーに移動したブートストラップ ダイアログにかなり複雑なロジックがあります。

アプリの他の場所 (別のコントローラーまたはサービス) で発生するロジックに基づいて、コントローラーでダイアログを起動したり、関数を呼び出したりしたい場合があります。ng-controller 要素に id を追加し、その id で要素を検索し、そのコントローラーの .scope() から呼び出して、これを達成しました。基本的にこれ:

HTMLで:

<div id="modalController" ng-controller="modalController">

そして、別のサービスまたはコントローラーで:

angular.element("#modalController").scope().somefunction()

名前だけでコントローラーを取得できないのはかなり奇妙に思えます。これを行う方法はありますか?

4

1 に答える 1

1

サービスを作成し、そのサービスで維持されているデータにモデルをバインドします。サービス内でモデルを変更すると、どこでも変更されます。

変更が必要な pubsub インターフェイスを提供するサービスを作成することもできます。

それを行うさらに別の方法は、システムの状態を表す単一のモデルを用意し、それを変更することです。そのモデルの関連部分を必要に応じて各ウィジェットのスコープに接続すると、通信デバイスが組み込まれます。

ある場所で変更を加えていると、別の場所で変更が発生するように思えます。その場合、モデルのすべての部分を正しく更新するサービスを持つことが最善の方法であると私は主張します。この機能をぶら下げている別のウィジェットを追加した場合にどうするかを常に想像してください。

于 2013-08-26T22:50:45.637 に答える