13

angularJSを使用しています。ページにいくつかの<select>要素があり、それぞれに独自のng-changeがあります。次に例を示します。

<select id="hairColorComponent" ng-model="hairColor"
        ng-options="option.name for option in hairColorData"
        ng-change="updateUserData()">

各属性updateUserDataのパラメーターとして手動で指定することなく、どの DOM 要素が関数内から更新されたかを判断できるようにしたいと考えています。ng-change

eventのコンテキスト内で使用できる、またはcaller類似のものはありますupdateUserDataか?

うまくいけば、次のようなものng-change="updateUserData(caller)"

4

2 に答える 2

11

設計上、これを行う (簡単な) 方法はありません。Angular コントローラーは DOM から完全に分離されているはずなので、DOM を参照する必要がある場合は、おそらく間違った方法でアプローチしている可能性があります。

あなたのHTMLが

<select id="hairColorComponent" ng-model="hairColor"
        ng-options="option.name for option in hairColorData"
        ng-change="updateUserData()">

次に、選択を変更すると$scope.hairColor、コントローラーの値が変更されます。そのupdateUserData()値を読み取り、それに応じて行動するだけです。

あなたの状況でDOMを参照する以外にそれを行う方法が本当にない場合は、カスタムディレクティブを書くことでそれを行うことができます. 一般に、Angular での DOM の直接操作は、最後の手段として行う必要があります。

于 2013-06-09T09:08:25.057 に答える