1. ホーム
  2. angularjs

[解決済み] オブジェクトが空かどうかのチェックは、ng-showでは動作するが、コントローラからは動作しない?

2023-02-17 01:31:53

質問

以下のようなJSオブジェクトがあります。

$scope.items = {};

私はまた、アイテムでこのオブジェクトを埋める$ httpリクエストを持っています。私はこのアイテムが空であるかどうかを検出したいのですが、ng-showはこれをサポートしているように見えます... 私は入力します

ng-show="items"

コントローラから同じことをしたいのですが、うまくいきません。オブジェクトを繰り返し処理して、プロパティがあるかどうかを確認するか、lodashかunderscoreを使用しなければならないようです。

代替案はありますか?

試してみました

alert($scope.items == true);

が、オブジェクトの作成時および $http というように、そのように動作していません。

どのように解決するのですか?

空のオブジェクトリテラルを使用する必要はなく、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
    };
});