Angular JS ===比较不起作用

时间:2015-12-12 21:30:25

标签: javascript angularjs

我试图将从url传递给控制器​​的值与json文件中的字段进行比较。

galleryItem.html

    

    <div class="filter-box">
        <ul class="filter list-inline text-center" ng-repeat="gal in ParentData">
            <li><a href="Gallery/({{gal.GalleryLink}})"></a></li>
        </ul>
    </div>

    <div class="container-fluid">
        <div class="row">
            <div class="portfolio-box" ng-repeat="x in data">
                <div class="col-sm-4">
                    <div class="item-img-wrap">
                        <img ng-src={{x.url}} class="img-responsive" alt="">

                        <div class="item-img-overlay">
                            <a href={{x.url}} class="show-image">
                                <span></span>
                            </a>
                        </div>
                    </div>
                </div>


            </div>
        </div>
    </div>
</div>

更新的控制器:

controllers.controller('GalleryViewCtrl', function GalleryViewCtrl($scope, $http, $stateParams) {
$scope.pageName = '';
$scope.Description = '';
$scope.GalleryID = $stateParams.id;

$http.get('/data/galleryItems.json')
                .then(function (response) { $scope.ParentData = response.data.galleries });


$http.get('/data/galleryItemImages.json')
                .then(function (response) {
                    $scope.data = response.data.images.galleryIdentifier === $stateParams.id;
                });

});

我验证了正确的值传递给控制器​​,值是静态的,因此从json文件传递的数据也是如此。我按照建议放置了一个if语句来检查null。我暂时删除它以减少我正在使用的内容。

如果我删除=== $ stateParams.id,我会正确返回并显示所有图像。

如果我将$ stateParams.id替换为我知道在列表中的值(4或&#39; 4&#39;),我不会返回任何内容。我还尝试了列表中最后一项的值。

没有错误(加载脚本,读取json等),并且在我调试时所有值都是正确的。

我还是新手,并且有很多文档都有不同的解决方案,这一切都让人很困惑。如果有人有任何想法,他们将不胜感激。

2 个答案:

答案 0 :(得分:0)

当ajax调用返回某些数据时,您正在将数据加载到$scope.data。我假设您的视图代码在此之前调用了galleryFiltered。可能会在从方法返回值之前尝试添加空检查。

$scope.galleryFiltered = function () {
   if($scope.data!=null) 
   {
      return $scope.data.galleryIdentifier === $scope.GalleryID;
   }
   return false;
};

答案 1 :(得分:0)

请记住$ http服务返回一个promise,因此$ scope.data将是未定义的(或保持当前状态),直到$http.get('/data/galleryItemImages.json')将返回成功回调函数并从响应中为$scope.data分配新值

如果您在承诺得到解决之前运行$scope.galleryFiltered(),那么您将$scope.data == undefined$scope.data当时或$scope.galleryFiltered()执行时存储的任何数据。