0

ツールチップの AngularUI-Bootstrap ディレクティブを変更して、エラー メッセージを表示できるようにしました。これまでに行ったことは次のとおりです

しかし、動的メッセージに問題があります。最初の入力フィールドに初めてマウスオーバーすると、メッセージが間違った場所に表示されます。これは、モデルがまだ正しく更新されていないためです。もちろん、2 回目のマウスオーバーの後、ツールチップは適切な場所にあります。ただし、表示するメッセージが再び変更されると、同じ失敗が発生します。

$parseテンプレートを更新するために使用しています:

$parse('tt_content').assign( scope, 
    getErrorMessage( ctrl.$error ) || attrs.tooltip
);

すべてのリスナーが復活して更新されたわけではないようで、「ttHeight」と「ttWidth」はまだ「古い」値に設定されています。メッセージ/モデルの正しい更新は、3 番目の例で示されている $observe でのみ機能します。

私は立ち往生していて、何が間違っていたのかわからないのですか?:(

4

1 に答える 1

0

問題は、$apply でモデルを変更する場合、そのようなモデルをすべてのウォッチャーに通知するために、ダイジェスト サイクルを手動で有効にする必要があることです。基本的に、次scope.$digest();のようなことを行ってスコープを変更するたびに追加する必要がありますscope.$apply( show );

私はここで私の提案であなたのコードを修正しましたhttp://jsfiddle.net/TaAHZ/2/

于 2013-03-21T04:38:29.830 に答える