我试图将从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等),并且在我调试时所有值都是正确的。
我还是新手,并且有很多文档都有不同的解决方案,这一切都让人很困惑。如果有人有任何想法,他们将不胜感激。
答案 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()
执行时存储的任何数据。