4

null や空でない場合にのみ表示する要素のリストがあり、そのために ng-if を ng-repeat ブロックの前に配置しました。

            <tbody ng-if="adsNotEmpty">

                <!-- Start: list_row -->
                <tr ng-repeat="ad in ads">
                    <td>{{$index + 1}}</td>
                    <ad-thumbnail ad="ad"/>
                </tr>                   
                <!-- End: list_row -->

            </tbody>

そのために、広告リストを評価し、adsNotEmpty 変数を設定するコントローラー コードがあります。

controllers.controller('AdCtrl', ['$scope', 'AdService',
  function($scope, AdService) {
    $scope.ads = AdService.query();
    $scope.adsNotEmpty = ($scope.ads && $scope.ads.length > 0);
  }]);

adsNotEmpty の結果が false であっても、現在、空の応答で HTTP 200 OK ステータスを返す RESTful Web サービスがあります。コードは ad-thumbnail ディレクティブ内に入ります。

広告サムネイル ディレクティブの内容:

<td>
AD - {{ad.name}}
</td>

結果の HTML は、広告リストが空であっても画面上に AD - を出力します。

からの結果オブジェクト

$scope.ads = AdService.query();

デバッグ時に表示:

Array[0]
$promise: Object
$resolved: false
length: 0
__proto__: Array[0]

angular が ad-thumbnail ディレクティブをレンダリングしないようにするには、上記のコードの何が問題になるのでしょうか?

参照用にここにソリューションを投稿しています:

コントローラーで:

controllers.controller('AdCtrl', ['$scope', 'AdService',
  function($scope, AdService) {

    AdService.query(function(data) {
        $scope.ads = data;
        $scope.adsNotEmpty = ($scope.ads.length > 0);
    });

そしてページ内:

    <tbody>
        <!-- Start: list_row -->
        <tr ng-repeat="ad in ads">
            <td ng-if="adsNotEmpty">{{$index + 1}}</td>
            <ad-thumbnail ad="ad" ng-if="adsNotEmpty"/>
        </tr>                   
        <!-- End: list_row -->
    </tbody>
4

2 に答える 2

3

log、あなたが見るべきものを見ていないことを示しています。$promiseデータを探す前に、クエリによって返されたをチェーンする必要があります。

   AdService.query().$promise.then(function(data) {
       $scope.ads = data;
       $scope.adsNotEmpty = ($scope.ads && $scope.ads.length);
   });

ng-repeatat tha インスタンスは、Queryhance によって返されたオブジェクトのプロパティを反復処理しています。空白が表示されます。AD-

于 2014-08-26T03:04:31.690 に答える
2

これを試して:

<tbody ng-if="ads.length > 0">

    <!-- Start: list_row -->
    <tr ng-repeat="ad in ads">
      <td>{{$index + 1}}</td>
       <ad-thumbnail ad="ad"/>
     </tr>                   
    <!-- End: list_row -->

</tbody>
于 2014-08-26T13:38:17.500 に答える