在控制器的范围内,我有类似的东西:
$scope.card = {};
在视图中,我必须检查我的对象是否仍然是空文字{}
,或者它是否包含某些字段中的某些数据。
我试过了:
ng-show="angular.equals({}, card)"
和
ng-show="!angular.equals({}, card)"
但它不起作用。
有没有更好的方法?如何检查对象是否为空或是否包含某些字段?
答案 0 :(得分:47)
您可以使用:Object.keys(card).length === 0
但请确保您在控制器的方法中使用它,因为Object
在视图中不可用,例如:
$scope.isObjectEmpty = function(card){
return Object.keys(card).length === 0;
}
然后你可以从视图中调用该函数:
ng-show="!isObjectEmpty(card)"
答案 1 :(得分:12)
使用json
过滤器并与'{}'
字符串进行比较。
<div>
My object is {{ (myObject | json) == '{}' ? 'Empty' : 'Not Empty' }}
</div>
ng-show
示例:
<div ng-show="(myObject | json) != '{}'"></div>
答案 2 :(得分:6)
创建一个检查对象是否为空的函数:
$scope.isEmpty = function(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
};
然后,您可以在html中进行检查:
ng-show="!isEmpty(card)"
答案 3 :(得分:5)
请使用过滤器
尝试这种方式angular.module('myApp')
.filter('isEmpty', function () {
var bar;
return function (obj) {
for (bar in obj) {
if (obj.hasOwnProperty(bar)) {
return false;
}
}
return true;
};
});
用法:
<p ng-hide="items | isEmpty">Some Content</p>
来自:Checking if object is empty, works with ng-show but not from controller?
答案 4 :(得分:5)
试试这个:
@Module
@ActivityScope
public class MyModule {
private final Activity activity;
public MyModule(Activity activity) {
this.activity = activity;
}
@Provides
@ActivityScope
Activity activity() {
return activity;
}
}
答案 5 :(得分:4)
http://plnkr.co/edit/u3xZFRKYCUh4D6hGzERw?p=preview
由于范围内没有角度,因此您可以将其传递给控制器范围。
$scope.angular = angular;
答案 6 :(得分:2)
这将执行对象空检查:
[0] => Array
(
[mydata] => Array
(
[id] => 79
[my_birth_day] => 1990-06-20
[my_address] => 400
[my_age] => 26
[my_name] => Joy
[my_id] => 1
[my_test] => math
[created] => 2017-06-19 15:39:44
[my_date] => 2017-08-13
)
答案 7 :(得分:1)
您不应该将变量初始化为空对象,而应该让它为undefined
或null
,直到存在非null
/ {{1}的条件为止} value:
undefined
然后你的模板:
$scope.card;
if (someCondition = true) {
$scope.card = {};
}
答案 8 :(得分:1)
尝试
if(object.key==undefined){
// object empty
}else{
// object exist
}
以html
*ngIf="object.key==undefined"
答案 9 :(得分:0)
创建一个$scope
函数来检查它并返回true或false,就像“isEmpty”函数一样,并在ng-if
语句的视图中使用
ng-if="isEmpty(object)"
答案 10 :(得分:0)
在component中检查空虚时,我遇到了类似的问题。在这种情况下,控制器必须定义一个实际执行测试的方法,并且视图使用它:
function FormNumericFieldController(/*$scope, $element, $attrs*/ ) {
var ctrl = this;
ctrl.isEmptyObject = function(object) {
return angular.equals(object, {});
}
}
<!-- any validation error will trigger an error highlight -->
<span ng-class="{'has-error': !$ctrl.isEmptyObject($ctrl.formFieldErrorRef) }">
<!-- validated control here -->
</span>
答案 11 :(得分:0)
我必须验证空对象检查,如下所示
前:
<div data-ng-include="'/xx/xx/xx/regtabs.html'" data-ng-if =
"$parent.$eval((errors | json) != '{}')" >
</div>
错误是我的范围对象,它在我的控制器中被定义为$scope.error = {};
答案 12 :(得分:0)
您可以使用普通的javascript对象类来实现它, 对象类具有键函数,该函数以1个参数作为输入,如下所示:
Object.keys(obj).length === 0
您可以通过3种方式来实现它, 1)电流控制器范围 2)筛选 3)$ rootScope
1)第一种方法是当前的控制器范围
$ scope.isObjEmpty = function(obj){ 返回Object.keys(obj).length === 0; }
然后您可以从视图中调用该函数:
ng-show =“!isObjEmpty(obj)”如果要动态显示和隐藏dom& ng-if =“!isObjEmpty(obj)”如果要动态删除或添加dom。
2)第二种方法是自定义过滤器。以下代码应适用于对象和数组
angular.module('angularApp')
.filter('isEmpty', [function () {
return function (obj) {
if (obj == undefined || obj == null || obj == '')
return true;
if (angular.isObject(obj))
return Object.keys(obj).length != 0;
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
return false;
}
}
return true;
};
}]);
<div ng-hide="items | isEmpty"> Your content's goes here </div>
3)第三种方法是$ rootScope, 创建一个简单的javascript函数并将其添加到$ rootScope服务器中,它将在所有范围和UI中默认访问。
函数isObjEmpty(obj){ 返回Object.keys(obj).length === 0; }
$ rootScope.isObjEmpty = isObjEmpty;
答案 13 :(得分:0)
一种有效的好方法是在HTML文件中使用如下所示的“ json管道” :
my_list <- list(unique(sort(obs_IND$Action)))
obs_IND %>%
count(my_list) %>%
group_by(Operatie) %>%
tally()
它使您可以清楚地查看对象是否为空。
我尝试了很多显示在这里的方法,但是没有一个起作用。
答案 14 :(得分:-1)
您必须检查对象是否为空。 AngularJs提供内置指令ng-if
。下面给出一个例子。
<tr ng-repeat="key in object" ng-if="object != 'null'" >
<td>{{object.key}}</td>
<td>{{object.key}}</td>
</tr>