99

私はそのように宣言されたJSオブジェクトを持っています

$scope.items = {};

また、このオブジェクトをアイテムで満たす $http リクエストもあります。このアイテムが空かどうかを検出したいのですが、ng-show がこれをサポートしているようです...入力します

ng-show="items"

魔法のように機能します。コントローラーからも同じことをしたいのですが、機能しないようです。オブジェクトを反復処理して、プロパティがあるかどうかを確認するか、lodashまたはアンダースコアを使用する必要があるようです.

代替手段はありますか?

私は試しました

alert($scope.items == true);

ただし、オブジェクトが作成されたときと が入力されたときは常に false を返す$httpため、そのようには機能しません。

4

9 に答える 9

63

ここでは空のオブジェクト リテラルを使用する必要はありません。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
    };
});
于 2013-07-24T16:12:22.843 に答える
61

別の簡単なワンライナー:

var ob = {};
Object.keys(ob).length // 0
于 2014-05-21T22:15:19.457 に答える
7
if( obj[0] )

これのよりクリーンなバージョンは次のようになります。

if( typeof Object.keys(obj)[0] === 'undefined' )

オブジェクト プロパティが設定されていない場合、結果は未定義になります。

于 2015-08-21T16:57:38.353 に答える
-2

空のオブジェクトをチェック

$scope.isValid = function(value) {
    return !value
}
于 2016-05-24T15:39:24.420 に答える