我有一个JS对象,声明如下
$scope.items = {};
我还有一个用项目填充此对象的$http请求。我想检测这个项目是否为空,看起来ng-show支持这个…我进入
ng-show="items"
它神奇地工作了,我也想在控制器上做同样的事情,但我似乎不能让它工作,似乎我可能不得不迭代对象,看看它是否有任何属性,或者使用lodash或下划线。
有没有别的选择?
我确实试过了
alert($scope.items == true);
但是在创建对象和填充$http
时,它总是返回false,所以它不是以这种方式工作的。
发布于 2013-07-25 00:12:23
这里不需要使用空的对象文字,你可以使用null或undefined:
$scope.items = null;
通过这种方式,ng-show
应该可以继续工作,并且在您的控制器中,您可以执行以下操作:
if ($scope.items) {
// items have value
} else {
// items is still null
}
在$http
回调中,您可以执行以下操作:
$http.get(..., function(data) {
$scope.items = {
data: data,
// other stuff
};
});
发布于 2014-05-09 06:21:07
或者,您可以通过执行以下操作来保持简单:
alert(angular.equals({}, $scope.items));
发布于 2014-05-01 03:26:19
在一个私人项目中,a编写了这个过滤器
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>
测试:
describe('Filter: isEmpty', function () {
// load the filter's module
beforeEach(module('myApp'));
// initialize a new instance of the filter before each test
var isEmpty;
beforeEach(inject(function ($filter) {
isEmpty = $filter('isEmpty');
}));
it('should return the input prefixed with "isEmpty filter:"', function () {
expect(isEmpty({})).toBe(true);
expect(isEmpty({foo: "bar"})).toBe(false);
});
});
致以问候。
https://stackoverflow.com/questions/17839141
复制相似问题