2016-02-03 60 views
0

我想檢查一個鍵是否存在於角度$範圍內的對象中。在我的控制,我得到這個:原始JavaScript在ng-if不起作用?

$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) 

任何如何我可以檢查the_key是否存在於the_object內ng-if?

回答

1

如果您要檢查的屬性位於對象內而不是繼承的屬性,則可以使用下面的代碼。

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

如果上述情況並非如此,你確保你不initalize the_key未定義在你的對象,你可以使用下面的代碼:

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

檢查這個plunker

如果你確定,你沒有初始化你的對象的任何值未定義,第二種方法比第一種方法快。查看更多有關這在https://stackoverflow.com/a/22074727/3292746

+0

它的工作原理!但爲什麼?!你知道爲什麼我嘗試使用的正常的JavaScript不起作用嗎?我以爲Angular只需要引號之間的代碼並將其評估爲js? – kramer65

+0

這是因爲,如果期望角表達式和角表達式與JavaScript表達式不相同。在(https://docs.angularjs.org/guide/expression)瞭解更多關於Angular Expression的信息。根據它,它不允許空洞expressoin.But它的作品。最好使用undefined而不是void(0)。 –

1

你可以簡單地檢查

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

它檢查the_key存在或不the_object。如果存在則返回true,如果不存在則返回false。存在意味着不確定。

+0

這是不一樣的。如果'the_object.the_key'是'false'或'null'會怎麼樣? – kramer65

+0

好的,更新了我的代碼。如果你檢查'!== undefined',那麼它會像你想要的那樣工作。 –