我已经阅读了很多问题和答案,没有人帮助过我。我有这个功能:
var model = {};
var mediaReproductionApp = angular.module("mediaReproductionApp",["ui.event",'ngAnimate']);
mediaReproductionApp.run(function ($http) {
$http.get("movimenti_per_totem.json").success(function (data) {
model.items = data;
});
});
mediaReproductionApp.controller("MediaReproductionCtrl", function($scope, $http, $timeout) {
$scope.item = model;
$scope.playVideo = function(media) {
return media ? "../gallery/video/" + media : null;
}
$scope.reproductionCodeIsEmpty = function() {
return Object.keys($scope.item).length == 0;
}
$scope.endVideo = function() {
$timeout(function() {
$http.get("php/delete_record.php").success(function () {
$http.get("movimenti_per_totem.json").success(function (data) {
$scope.item.items = data;
});
});
if($scope.reproductionCodeIsEmpty()) {
prelevaDati('../json/52.json', 'spot_creator', 'sc1', modello_SC, {});
$scope.checkMediaData();
}
},1800);
}
$scope.checkMediaData = function() {
$http.get("movimenti_per_totem.json").success(function (data) {
$scope.item.items = data;
});
if($scope.reproductionCodeIsEmpty()) {
$timeout(function(){$scope.checkMediaData();},2000);
}
}
$scope.checkMediaData();
});
这是我的JSON文件,当它不为空时:
[ {"media":"zafferano_VP8.webm"}, {"media":"amaretti_VP8.webm"}, {"media":"passata_VP8.webm"}]
当它为空时永远不会返回true。我也试过了:
$scope.reproductionCodeIsEmpty = function() {
return $scope.item.length == 0;
}
$scope.reproductionCodeIsEmpty = function() {
return $scope.item == {};
}
$scope.reproductionCodeIsEmpty = function() {
return angular.isUndefined($scope.item) || $scope.item === null;
}
$scope.reproductionCodeIsEmpty = function() {
return angular.isUndefined($scope.item.items) || $scope.item.items === null;
}
没有任何作用......你能告诉我为什么吗? 谢谢!
答案 0 :(得分:1)
在您添加问题之后:
您将模型定义为:model.items = data;
所以,你的空模型是:model = { items: [] }
。
这就是为什么它不是空的。您需要测试model.items
是否为空。
如果您需要经过测试的方式来判断对象是否为空,我建议lodash.isEmpty()
。您可以将它用于“任何类似数组的值,例如参数对象,数组,缓冲区,字符串或类似jQuery的集合”。
https://lodash.com/docs/4.15.0#isEmpty
由于我不知道您的model
是什么,这将涵盖最可能的数据类型。
_.isEmpty(null);
// => true
_.isEmpty(true);
// => true
_.isEmpty(1);
// => true
_.isEmpty([1, 2, 3]);
// => false
_.isEmpty({ 'a': 1 });
// => false
答案 1 :(得分:0)
如果要检查对象/数组是否为空,请使用:
angular.equals({}, yourObject);
angular.equals([], yourArray);