Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ng repeat angular js中,order by and click不起作用_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 在ng repeat angular js中,order by and click不起作用

Javascript 在ng repeat angular js中,order by and click不起作用,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,ng重复显示数据库中的数据,但我的按谓词排序、反向功能和单击不起作用 <div ng-repeat="shipment in sortedShipments"> <div ng-click="show_shipment($index,shipment.shipment_id)" ng-class="{selected_trip: $index === currentShipment}"> <div>{{shipment.from_location

ng重复显示数据库中的数据,但我的按谓词排序、反向功能和单击不起作用

<div ng-repeat="shipment in sortedShipments">
  <div ng-click="show_shipment($index,shipment.shipment_id)" ng-class="{selected_trip: $index === currentShipment}">
     <div>{{shipment.from_location}</div>
  </div>
</div>
对于单击功能,我有两个按钮,使用所选索引和上一个按钮移动到下一个装运div

<a class="" ng-click="next($event)"  href="#">next</a>
<a class="" ng-click="previous($event)"  href="#">previous</a>
这是我们的装运方式

 $scope.show_shipment = function(index,id) {
        $scope.setSelected(index); 
        $http.get(url+'/get-shipments/'+id).success(function(data){
           $scope.to_location = data[0]['to_location'];
        })
})
这是我在js中开始使用$filter选项时,order by的代码,它不起作用

 $scope.order = function(predicate) {
      $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
      $scope.predicate = predicate;
    };

您应该使用
angular.element
trigger
方法:

因此:
$('.selected_trip')。单击()

变成:
angular.element('.selected_trip')。trigger('click')

它应该会起作用

编辑

您还应该使用
$timeout
作为解决方法,因为您处于
$digest
中,无法再次调用
$apply
,这就是为什么会出现这些错误

我向您解释了
$timeout
的用法:

app.controller('dummy', function ($scope, $timeout) {
    $scope.test = function () {
        $timeout(function() {
            angular.element('.selected_trip').trigger('click');
        }, 0, false);
    }

    $scope.show_shipment = function () {
        $scope.clicked = "hello world";
    };
});

此处的更多信息:

您应该使用
angular.element
trigger
方法:

因此:
$('.selected_trip')。单击()

变成:
angular.element('.selected_trip')。trigger('click')

它应该会起作用

编辑

您还应该使用
$timeout
作为解决方法,因为您处于
$digest
中,无法再次调用
$apply
,这就是为什么会出现这些错误

我向您解释了
$timeout
的用法:

app.controller('dummy', function ($scope, $timeout) {
    $scope.test = function () {
        $timeout(function() {
            angular.element('.selected_trip').trigger('click');
        }, 0, false);
    }

    $scope.show_shipment = function () {
        $scope.clicked = "hello world";
    };
});


此处的详细信息:

您不应执行此操作。
$('.selected_trip')。单击()。这将不能保证工作,也不能保证
document.querySelector('.selected_trip')。单击()
@dfsq然后我应该使用的是show_shipping一个在您的控制器中定义的函数?是的,它是一个在另一个选项卡中显示所选装运数据的函数。您不应该这样做
$('.selected_trip')。单击()。这将不能保证工作,也不能保证
document.querySelector('.selected_trip')。单击()
@dfsq那么我应该使用什么是show_shipping在控制器中定义的函数?是的,它是一个在另一个选项卡中显示所选装运数据的函数,很抱歉答复太晚,但它不起作用。它给我这个错误:[$rootScope:inprog]at error(native),这可能是
show_shipping()的问题
方法,但您没有尝试在
show\u shipping
中只发布一个
console.log('hello')
,它应该可以工作。我已经发布了show\u shipping()方法作为回答,当页面默认加载时,它会在控制台中打印hello,但当我们使用angualr触发单击时,它会在控制台错误中给出3个错误:[$rootScope:inprog]错误:[$rootScope:inprog]错误:[$rootScope:inprog]谢谢@Michelem,但我的订单也不起作用,因为我在我的问题中请求了帮助。你能帮我解释一下为什么它不起作用吗对不起,回复太晚了,但它不起作用。它给了我这个错误:[$rootScope:inprog]出现错误(本机),这可能是
show\u-shipping()
方法的问题,但您没有在
show\u-shipping
中仅发布
console.log('hello')
,它应该可以工作,我已经发布了show\u-shipping()方法在应答中当页面默认加载时,它在控制台中打印hello,但当我们使用angualr触发单击时,它在控制台中给我3个错误错误:[$rootScope:inprog]错误:[$rootScope:inprog]错误:[$rootScope:inprog]谢谢@Michelem,但我的订单不起作用,因为在我的问题中,我已经请求了帮助,你能帮我解释一下为什么它不起作用吗
 $scope.order = function(predicate) {
      $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
      $scope.predicate = predicate;
    };
app.controller('dummy', function ($scope, $timeout) {
    $scope.test = function () {
        $timeout(function() {
            angular.element('.selected_trip').trigger('click');
        }, 0, false);
    }

    $scope.show_shipment = function () {
        $scope.clicked = "hello world";
    };
});