为什么 {{ isNan(x) }} 在 angularJS 中不起作用?

2024-01-03

请注意,此问题的标题已更改为更关注确切问题的标题。请参阅评论流以了解它是如何发生的,我意识到问题是 AngularJS 似乎无法处理 {{ isNaN() }}

我的 HTML 中有以下内容:

xx {{ option.selectedSubject }} yy {{ (option.selectedSubject == null) }} zz

我也尝试过:

xx {{ option.selectedSubject }} yy {{ option.selectedSubject == null }} z

and:

xx {{ option.selectedSubject }} yy {{ option.selectedSubject === null }} zz

有人可以帮我解释一下为什么当我查看我的页面时,我会收到上述每个内容的以下信息:

xx null yy false zz

Update 1我尝试了以下方法:

aa {{ option.selectedSubject === "null" }} bb {{ option.selectedSubject == "null" }} cc

它给出了这个:

aa false bb false cc

Update 2我不确定这是否有帮助,但这是填充 option.selectedSubject 值的内容。在这种情况下,本地存储中没有任何内容:

$scope.option.selectedSubject = parseInt(localStorage.get('selectedSubject'));

当我检查 $scope.option.selected subject 的值时,它是NaN


这里的问题不是isNaN。问题是您正在调用不存在的 $scope 变量上的函数。

每个内插的文本片段 ( '{{ text }}' ) 都与 $scope 变量关联,并根据该 $scope 变量进行评估。

为了让事情变得简单,如果 $scope.property 不存在,可以即时创建它。每当您使用 ngModel='someProperty' 或 {{ aPropertyName }} 时,都会自动为您创建相应的 $scope.someProperty 或 $scope.aPropertyName(如果尚不存在)。然而,此快捷方式仅适用于基元。

函数调用始终根据 $scope 进行评估,并且从不创建。这就是为什么你必须说 $scope.isNaN = isNaN,正如你在之前的评论中发现的那样。

尝试使用任何功能。 isArray、isNumber 等。除非您将 $scope.functionName = functionName 放入控制器中的某处,否则它将不起作用。

编辑:另外,如果你真的想在插值中进行 isNaN 测试,你可以利用 javascript 的类型系统并使用

{{ property != property }}

但这是不好的形式...

http://plnkr.co/edit/wfLqzk8QxScsJPF5qY12?p=preview http://plnkr.co/edit/wfLqzk8QxScsJPF5qY12?p=preview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 {{ isNan(x) }} 在 angularJS 中不起作用? 的相关文章

随机推荐