如果对象的属性是对象本身,我如何检查角度视图?

时间:2016-08-24 12:10:09

标签: angularjs

我正在构建一些带有角度的表单视图,需要在一些嵌套对象上运行。

我遇到了一个问题,无法弄清楚我到底发生了什么。

<div ng-app="app">

  <div ng-controller="Main">

     <div ng-repeat="(key, value) in ob">
       {{key}}
       <div ng-if="angular.isObject(ob[key])">
         angular.isObject() returns true!
       </div>
       <div ng-if="!angular.isObject(ob[key])">
         angular.isObject() returns false!
       </div>

       <div ng-if="typeof(ob[key]) === 'object'">
           typeof is object!
       </div>

       <div ng-if="typeof(ob[key]) !== 'object'">
           typeof is not object!
       </div>

    </div>

  </div>

</div>

在控制器中:

$scope.ob = {
  prop1: 1,
  prop2: 'asd',
  prop3: {
    subprop1: 'one',
    subprop2: 'two'
  }
};

在上面的代码中,我试图使用angular.isObject来检测属性是否是一个对象,所以我可以在之后进入另一个循环。即使我的第三个属性是对象,ng-ifs也会解析为false。使用typeof时也一样。

Codepen链接:http://codepen.io/anon/pen/rLEVLr

1 个答案:

答案 0 :(得分:3)

您无法在模板中使用angular。模板是针对范围对象而非全局范围对象(例如window,它具有角度属性作为全局变量)。

如果你真的想要,你可以简单地公开像这样的角度的引用:

$scope.angular = angular

演示: http://codepen.io/anon/pen/yJdNzV?editors=1010

但更好的方法是只公开你实际需要的功能:

$scope.isObject = angular.isObject

并在模板中使用它:

ng-if="isObject(value)"