2017-04-05 4 views
0

角度関数内でjqueryを使用し、ng-clickで呼び出すようにしました。それは、正しく動作しますが、いつも、私は第二の機能角度関数内のjqueryはダブルクリックで呼び出す必要があります

を呼び出すために、ボタンをクリックする必要があり、それはサービスを呼び出し、成功ならば、それはdiv要素にスクロールし、私の角度の関数である声明

<button type="button" class="btn btn-primary showRest" id="btnShow" ng-click="loadHotels()">Show Restaurants</button> 

を呼び出して、私の関数であります

$scope.loadHotels = function() { 
    $scope.setPlace(); 
    if (p != null) { 
    $http({ 
     method: 'POST', 
     url: 'http://localhost/fudline/access/hotels/loadhotelsfromplace', 
     data: $httpParamSerializerJQLike({ 
      place: p 
     }), 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded' 
     } 
     }) 
     .success(function(data, status, headers, config) { 
     $scope.hotels = data; 
     $(".showRest").click(function() { 
      $('html,body').animate({ 
       scrollTop: $(".hotels").offset().top 
      }, 
      'slow'); 
     }); 
     }).error(function(data, status, headers, config) { 
     // 
     }); 
    } 


} 
<button type="button" class="btn btn-primary showRest" id="btnShow" ng-click="loadHotels()">Show Restaurants</button> 

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 

...

行くためのセクションです
<div class="container text-center hotels">  
    <h3>Trending Restaurants</h3> 
</div> 
+0

なぜ同じ要素に対してもう一度クリックする必要がありますか? – sTx

+0

成功したコールバックでメソッドを呼び出すイベントハンドラは必要ありません。ちょうどイベントハンドラを削除する – CrazyMac

答えて

1

successコールバックでは、クリックイベントハンドラがバインドされているため、最初のクリックでは機能しません。

イベントハンドラは不要ですが、それを取り除いてください。

.success(function (data, status, headers, config) { 
    $scope.hotels = data; 
    $('html,body').animate({ 
     scrollTop: $(".hotels").offset().top 
    }, 'slow'); 
}) 
+0

ありがとう... jqueryの少ないknwoledgeのためです! –

関連する問題