Angularjs:除以两个非零范围变量会导致NULL

时间:2014-05-20 15:30:39

标签: javascript angularjs

我正在做一个简单的分页,我的范围变量在简单的除法运算后消失了。这一定是非常愚蠢的事情。

.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为NULL!这怎么可能?如果它们都是有效的非零整数,为什么我不能除$scope.rows / $scope.batch

简单的视图测试 <span>{{rows}} - {{batch}} - {{curpage}} - {{pagenum}}</span>

给了我339 - 15 - 1 - null

如果我不在$scope.rows中保存整数并将除法运算保留在服务回调中,则由于某种原因它会起作用。像这样。

getTablesS1.count(tid, function (d){
  $scope.pagenum = d.count / $scope.batch;
});

但这完全不是我想要的。我想拉一次行数并将其保存在范围变量或任何变量中,这样我就可以在每次批量更改时重新计算页数。每次我想重新计算页码时,我都不想进行$ http呼叫。

谢谢。

1 个答案:

答案 0 :(得分:0)

&#34;现在,$scope.rows是一个整数(每个表的行数)我通过ajax 通过服务获得。&#34;

这是你的问题。首次初始化控制器时$scope.rows未定义,因为ajax响应尚未返回。

在该行上放置一个断点,您将会看到。

您在视图中看到的339可能是因为ajax响应已经回来了。