Javascript 基于limito-angularjs的重排序
因此,我有一个由Javascript 基于limito-angularjs的重排序,javascript,angularjs,angularjs-ng-repeat,render,Javascript,Angularjs,Angularjs Ng Repeat,Render,因此,我有一个由ng repeat指令输出的列表,上面有filter|limito:amount 金额变量根据用户屏幕大小而变化。它正在正确更改,但在更新变量时列表不会重新呈现 在amount可变更改后,如何强制它重新渲染 HTML JS(控制员) var屏幕宽度; var trackListNumber=函数(){ screenWidth=$window.innerWidth; 如果(屏幕宽度
ng repeat
指令输出的列表,上面有filter|limito:amount
金额
变量根据用户屏幕大小而变化。它正在正确更改,但在更新变量时列表不会重新呈现
在amount
可变更改后,如何强制它重新渲染
HTML
JS(控制员)
var屏幕宽度;
var trackListNumber=函数(){
screenWidth=$window.innerWidth;
如果(屏幕宽度<1599){
控制台日志(屏幕宽度);
$scope.amount=18;
}否则{
$scope.amount=27;
}
};
trackListNumber();
angular.element($window.bind('resize',function(){
trackListNumber();
});
编辑
我把代码改为
var screenWidth;
var trackIconsNumber = $scope.$apply(function() {
screenWidth = $window.innerWidth;
if (screenWidth < 1599) {
console.log(screenWidth);
$scope.iconsAmount = 18;
} else {
$scope.iconsAmount = 9;
}
});
trackIconsNumber();
angular.element($window).bind('resize', function () {
trackIconsNumber();
});
var屏幕宽度;
var trackIconsNumber=$scope.$apply(函数(){
screenWidth=$window.innerWidth;
如果(屏幕宽度<1599){
控制台日志(屏幕宽度);
$scope.iconsaunt=18;
}否则{
$scope.iconsAmount=9;
}
});
trackiconnumber();
angular.element($window.bind('resize',function(){
trackiconnumber();
});
这会导致以下错误:
angular.js:14642错误:[$rootScope:inprog]$digest已在进行中
正如评论中所说,您应该使用$scope.$apply。实施应该是这样的:
长版本
angular.element($window).bind('resize', function() {
$scope.$apply(function() {
trackListNumber();
});
});
angular.element($window).bind('resize', function() {
$scope.$apply(trackListNumber());
});
短版
angular.element($window).bind('resize', function() {
$scope.$apply(function() {
trackListNumber();
});
});
angular.element($window).bind('resize', function() {
$scope.$apply(trackListNumber());
});
试试
$scope.$apply(trackListNumber)
我应该在哪里添加它?我尝试而不是trackListNumber()代码>在resize函数中和外部,这会导致以下错误:错误:[$rootScope:inprog]$digest已在进行中
。按如下方式包装:$scope.$apply(函数(){trackListNumber();})代码>我添加了新的编辑代码,但仍然不起作用。请看一看。将绑定到$window
的函数包装起来,然后删除trackiconnumber();重新加载页面后执行,因为它导致了我在编辑中提到的另一个错误。我的意思是重新加载后功能应该以正常方式执行,并使用$apply调整大小。从另一方面来说,这是行不通的。