ng-if中的原始javascript不起作用?

时间:2016-02-03 12:32:02

标签: javascript angularjs object indexing key

我正在尝试检查Angular $范围内的对象中是否存在密钥。在我的控制器中,我有这个:

$scope.the_object = {'the_key': 123};

在我的模板中,我得到了这个:

<span ng-if="'the_key' in the_object">
    the_key exists in the_object
</span>

但是我在控制台中得到以下跟踪:

Error: [$parse:syntax] http://errors.angularjs.org/1.4.7/$parse/syntax?p0=in&p1=is%20an%20unexpected%20token&p2=11&p3='the_key'NaNn%20the_object&p4=in%20the_object
    at Error (native)
    at http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:6:416
    at Object.s.throwError (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:209:339)
    at Object.s.ast (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:202:118)
    at Object.sd.compile (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:211:203)
    at fc.parse (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:238:193)
    at b.$get (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:117:315)
    at n.a.$get.n.$watch (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:127:125)
    at a.link (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:254:214)
    at aa (http://52.29.xx.xx:5000/bower/angular/angular.min.js?version=1.4.7:73:90)

如何从ng-if中检查the_key中是否存在the_object

2 个答案:

答案 0 :(得分:1)

如果要检查的属性位于对象内,而不是继承的属性,则可以使用下面的代码。

<span ng-if="the_object.hasOwnProperty('the_key')"> the_key exists in the_object </span>

如果不是这种情况,并确保您未在​​对象中初始化the_key未定义,则可以使用以下代码:

<span ng-if="the_object['the_key'] !== undefined"> the_key exists in the_object </span>

检查此plunker

如果你确定,你没有初始化你的对象未定义的任何值,第二种方法比第一种方法快。请在https://stackoverflow.com/a/22074727/3292746

查看更多相关信息

答案 1 :(得分:1)

您只需检查

即可

ng-if="the_object.the_key !== undefined"

检查the_key中是否存在the_object。如果存在,则返回true,如果不存在则返回false。存在意味着未定义。