我正在构建一些带有角度的表单视图,需要在一些嵌套对象上运行。
我遇到了一个问题,无法弄清楚我到底发生了什么。
<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
答案 0 :(得分:3)
您无法在模板中使用angular
。模板是针对范围对象而非全局范围对象(例如window
,它具有角度属性作为全局变量)。
如果你真的想要,你可以简单地公开像这样的角度的引用:
$scope.angular = angular
演示: http://codepen.io/anon/pen/yJdNzV?editors=1010
但更好的方法是只公开你实际需要的功能:
$scope.isObject = angular.isObject
并在模板中使用它:
ng-if="isObject(value)"