Javascript 在ng repeat angular js中,order by and click不起作用
ng重复显示数据库中的数据,但我的按谓词排序、反向功能和单击不起作用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
<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";
};
});