请注意,此问题的标题已更改为更专注于确切问题的标题.看到注释流跟随它是怎么来的,我意识到问题是AngularJS似乎不处理{{isNaN()}}
xx {{ option.selectedSubject }} yy {{ (option.selectedSubject == null) }} zz
我也试过:
xx {{ option.selectedSubject }} yy {{ option.selectedSubject == null }} z
和:
xx {{ option.selectedSubject }} yy {{ option.selectedSubject === null }} zz
有人可以帮助我解释为什么当我查看我的页面时,为什么我会收到以下每个信息:
xx null yy false zz
更新1我尝试了以下:
aa {{ option.selectedSubject === "null" }} bb {{ option.selectedSubject == "null" }} cc
并给出了这一点:
aa false bb false cc
更新2我不知道这是否有帮助,但这里填充了option.selectedSubject的值.在这种情况下,本地存储没有任何内容:
$scope.option.selectedSubject = parseInt(localStorage.get('selectedSubject'));
当我检查$scope.option.selectedSubject的值是NaN
这里的问题不是isNaN.问题是您正在调用不存在的$scope变量的函数.
每个插入的文本(‘{{text}}’)都与$scope变量相关联,并针对该$scope变量进行评估.
为了使事情变得容易,$scope.property可以在飞行中创建,如果它不存在.当您使用ngModel =’someProperty’或{{aPropertyName}}时,如果不存在,则会自动为您创建相应的$scope.someProperty或$scope.aPropertyName.但这个捷径只适用于图元.
函数调用总是针对$范围进行求值,而不会创建.这就是为什么你必须说$scope.isNaN = isNaN,就像你之前发表的一样.
尝试用任何功能. isArray,isNumber等.除非您在控制器中放置了一个$scope.functionName = functionName,否则它将无法正常工作.
编辑:另外,如果您真的想在插值中进行isNaN测试,可以利用javascript的类型系统并使用
{{ property != property }}
但这是坏的形式…