Aurelia
にカスタム要素を作成しましたが、valueChanged
もありますが、value
がカスタム要素の外で変更された場合にのみ、特定の操作を行う必要があります。署名がvalueChanged(newValue, oldValue)
なので、値がViewModel
から変更され、カスタム要素自体から変更されるのをどのように知ることができますか?それはどういうわけかobserver
またはobservable
となっていますか?AureliaのvalueChanged起源を知るには?
私は実際に動作するサンプルを手に入れましたが、value
がViewModel
から変更されたときに__array_observer__
というプロパティがあり、動作することがわかりましたが、それはおそらく理想的ではありません。だから私はちょっとしたコードを手に入れました
valueChanged(newValue, oldValue) {
if (newValue !== oldValue && newValue.__array_observer__) {
// value got changed outside of this custom element
}
}
これはおそらく理想的ではないでしょうか? value
がカスタム要素の外で変更された場所を知る上での他の提案はありますか?可能な限り
EDIT
、私はまだカスタム要素にアクセスする必要があります解決策を探しています。外部の値変更呼び出しによってトリガされたい場合でも、私は同じカスタム要素の内部関数を呼び出す必要があります。私の問題のもう少し説明を与えることを
EDIT#2
これはvalue
を再影響するアクションをトリガーするので、私はvalue
を外部から変更しまったときに知っておく必要があります。変更がカスタム要素の外側から来たのかどうかがわからなければ、私は再帰呼び出しを行い、それを止める方法はありません。私が探しているものはcaller
とcallee
だったものと似ていますが、これはES5と厳密モードでは削除されましたが、これは非常に便利でした。
まだ答えを探し:(
私は要素の外側から行われた変更だけを気にするので、私はロジックを逆転しようとしましたが、まだそれほど成功していません。 – ghiscoding
なぜそれを反転する必要があるのか分かりません。内部から値を変更するときはいつも、 'internalSetValue'を呼び出してフラグをセットし、最終的に' return'の下の 'valueChanged'のコードをスキップします。 –
私は使用法を暗示する答えを変更しました –