Javascript Angularjs:将两个非零范围变量相除会导致NULL
我正在做一个简单的分页,我的scope变量在一个简单的除法操作后消失。这一定是件可笑的事Javascript Angularjs:将两个非零范围变量相除会导致NULL,javascript,angularjs,Javascript,Angularjs,我正在做一个简单的分页,我的scope变量在一个简单的除法操作后消失。这一定是件可笑的事 .controller('ShowTableCtrl', function($scope, ...) { $scope.batch = 15; $scope.curpage = 1; getTablesS1.count(tid, function (d){ $scope.rows = d.count; }); $scope.pagenum = ($scope.rows /
.controller('ShowTableCtrl', function($scope, ...) {
$scope.batch = 15;
$scope.curpage = 1;
getTablesS1.count(tid, function (d){
$scope.rows = d.count;
});
$scope.pagenum = ($scope.rows / $scope.batch);
...
}
因此,$scope.batch
是每页要显示的行数,但实际上可以是任何数字
现在,
$scope.rows
是一个整数(每个表的行数),我通过一个服务通过ajax获得
因此,如果我在视图中测试它,则$scope.rows
和$scope.batch
都可用,但
$scope.pagenum
为空!这怎么可能?如果$scope.rows/$scope.batch
都是有效的非零整数,为什么我不能对它们进行除法
简单视图测试
{{rows}}-{batch}-{{curpage}-{{pagenum}}
给我339-15-1-null
如果我不将整数保存在$scope.rows
中,并将除法操作粘贴在服务回调中,那么它会因为某种原因而工作。像这样
getTablesS1.count(tid, function (d){
$scope.pagenum = d.count / $scope.batch;
});
但这完全不是我想要的。我想一次提取行数,并将其保存在一个范围变量或任何变量中,以便在每次批处理更改时重新计算页数。我不想每次重新计算页码时都调用$http
谢谢。“现在,$scope.rows
是一个整数(每个表的行数)我通过ajax通过服务获得。”
这是你的问题。控制器首次初始化时,$scope.rows
未定义,因为ajax响应尚未返回
在该行上放置一个断点,您将看到
您在视图中看到的是
339
,这可能是因为ajax响应回来了。谢谢。我可能遗漏了什么。那么,如果两个变量都是单独可用的,那么商为什么不可用呢?我该如何解决这个问题?如果我看一下正确的方法,我可能会更快。@r.sendecky请在执行$scope.pagenum=…
之前添加console.log($scope.rows)
,注意它是未定义的。如果是,您必须等待ajax返回,然后才能计算$scope.pagenum
。您是对的。那我怎么等呢?我需要提取计数并保存它,然后计算页码,然后显示结果。我现在明白了。但是我不明白为什么它会等待$scope.rows
自己正确地显示它,但是当涉及到$scope.pagenum
时,它不会等待并显示NULL?很抱歉,这让我非常困惑。@r.sendecky有可能在angular digest进程在HTML页面上呈现其代码时,ajax请求返回,现在$scope.rows
具有有效值。@r.sendecky,当服务完成请求时,应使用相关值分配$scope.rows
。