2017-02-10 16 views
0

私はこれに関するいくつかの記事を持っていますが、私の問題のための適切な解決策を得ていません。私はiアイコンをクリックします時にポップオーバーを見せたい角度JS 1.5とブートストラップ3Angular jsで要素のidを取得する方法

私のコードは、のような

<a href="" class="noUnderline" data-trigger="focus" data-toggle="popover" data-placement="bottom" data-content = "{{helpSrv.helpMessage}}" > 
<i class="fa fa-info-circle infoCirc" ng-click="helpSrv.showPopOverInfo($event)" id="forecastAttainmentId"> </i> 
</a> 

で使用しています。今、helpSrvはAngular JSで書かれたサービスです。 helpMessageは、要素のidによって選択されます。 helpSrvは、私はそれがポップオーバーで{{helpSrv.helpMessage}}を示し初めてiアイコンをクリックすると今

var s = this 
s.helpInfo = { 
"forecastAttainmentId": "Some text" 
} 
s.showPopOverInfo = function (event) {  
     var helpSelect = event.target.id 
     s.helpMessage = s.helpInfo[helpSelect] 
     console.log(s.helpMessage) 
} 

、のような二つのものが含まれているサービスです。次回は、実際のメッセージ、すなわちSome textを表示します。私は遅延が関数呼び出しのために発生したと思います。それを解決する方法?あるいは、idの要素をangle(プラグインなし)を使って自動的に取得し、data-content="{{helpSrv.helpInfo['id of the element']}}"を使用してPopoverのメッセージを取得することができます。

+0

本当に 'ng-lick'ですか?間違って入力した場合、 'ng-click'となるはずです – pryxen

答えて

0

$("#forecastAttainmentId").click(function(){...}を使用すると、jQueryを使用してiタグにアクセスできます。また、Popoverが最初に読み込まれたときにデータを表示するには、helpSrv.helpMessageを初期化する必要があります。

0

AngularJs digest cycleです。 $ timeoutを試してみてください:

s.showPopOverInfo = function (event) {  
    $timeout(function(){ 
     var helpSelect = event.target.id; // Always end lines with a semicolon 
     s.helpMessage = s.helpInfo[helpSelect]; 
     console.log(s.helpMessage); 
    }, 0); 
}; 
+0

$ timeoutを使用しました。しかし、それでも助けにならない – Anijit

+0

jsfiddleやjsbinなどで例を作成してください –

関連する問題