原语的JavaScript赋值不相等

时间:2015-03-24 17:36:35

标签: javascript angularjs

我正在使用ng-class(来自angularjs)将类分配给分页表中的活动页码。当按下“跳过10页”按钮时,它会调用一个函数并最终到达此处:

if (this.scope.currentPage <= this.scope.lastPage - this.scope.pageNumbersGroupSize) {
    this.scope.currentPage += this.scope.pageNumbersGroupSize;
} else {
    while (this.scope.currentPage < this.scope.lastPage) {
        this.scope.currentPage++;
    }
    //this.scope.currentPage = this.scope.lastPage;
}

原始if语句中的代码按预期工作,但else中的代码不能。最初我只有在else语句中注释掉的行:

this.scope.currentPage = this.scope.lastPage;

但由于某种原因,它没有激活我的HTML中的类:

<a ng-class="{'selectedPage' : pageNumber === currentPage, 'grayText' :
pageNumber !== currentPage}" ng-repeat="pageNumber in pageNumbers"
style="margin-right: 4px; cursor: pointer;" ng-click="goToPage(pageNumber)">
{{pageNumber}}
</a>

在pageNumber === currentPage的html中,应该使用class selectedPage。它不在原始代码中。然后,只是为了检查分配是否由于我使用的某些原因而不是相同的参考:

this.scope.currentPage = angular.copy(this.scope.lastPage);

这仍然无效。所以,我尝试了现在顶部代码中的while循环。这确实有效。有人可以解释为什么我的原始代码不起作用?此外,是否有更好的方法来解决这个问题,而不是把那个while循环放在那里?谢谢!

1 个答案:

答案 0 :(得分:0)

弄明白了:这是因为我使用的是= =而不是==而我用于lastPage的变量是从数据库存储过程作为字符串而不是数字返回的。它将字符串与带有===的数字进行比较,它们不相等。我刚刚从DB返回的值上使用了parseInt()并且它是固定的。