角度函数内的jquery需要双击才能调用

时间:2017-04-05 11:46:29

标签: javascript jquery angularjs

我只是在一个角度函数中使用了一个jquery并尝试通过ng-click调用。它工作正常,但我总是需要再次点击按钮来调用函数

这是我的函数调用语句

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

我的角度函数调用服务,如果成功则滚动到div

$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>

1 个答案:

答案 0 :(得分:1)

您正在success回调中绑定点击事件处理程序,因此首次点击时无效。

你不需要事件处理程序,摆脱它。

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