首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查对象是否为空,是否与ng-show一起工作,但不能从控制器?

检查对象是否为空,是否与ng-show一起工作,但不能从控制器?
EN

Stack Overflow用户
提问于 2013-07-24 23:57:40
回答 9查看 332.8K关注 0票数 99

我有一个JS对象,声明如下

代码语言:javascript
复制
$scope.items = {};

我还有一个用项目填充此对象的$http请求。我想检测这个项目是否为空,看起来ng-show支持这个…我进入

代码语言:javascript
复制
ng-show="items"

它神奇地工作了,我也想在控制器上做同样的事情,但我似乎不能让它工作,似乎我可能不得不迭代对象,看看它是否有任何属性,或者使用lodash或下划线。

有没有别的选择?

我确实试过了

代码语言:javascript
复制
alert($scope.items == true);

但是在创建对象和填充$http时,它总是返回false,所以它不是以这种方式工作的。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-07-25 00:12:23

这里不需要使用空的对象文字,你可以使用null或undefined:

代码语言:javascript
复制
$scope.items = null;

通过这种方式,ng-show应该可以继续工作,并且在您的控制器中,您可以执行以下操作:

代码语言:javascript
复制
if ($scope.items) {
    // items have value
} else {
    // items is still null
}

$http回调中,您可以执行以下操作:

代码语言:javascript
复制
$http.get(..., function(data) {
    $scope.items = {
        data: data,
        // other stuff
    };
});
票数 63
EN

Stack Overflow用户

发布于 2014-05-09 06:21:07

或者,您可以通过执行以下操作来保持简单:

代码语言:javascript
复制
alert(angular.equals({}, $scope.items));
票数 199
EN

Stack Overflow用户

发布于 2014-05-01 03:26:19

在一个私人项目中,a编写了这个过滤器

代码语言:javascript
复制
angular.module('myApp')
    .filter('isEmpty', function () {
        var bar;
        return function (obj) {
            for (bar in obj) {
                if (obj.hasOwnProperty(bar)) {
                    return false;
                }
            }
            return true;
        };
    });

用法:

代码语言:javascript
复制
<p ng-hide="items | isEmpty">Some Content</p>

测试:

代码语言:javascript
复制
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);
    });

});

致以问候。

票数 71
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17839141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档