angularjs 中数组没有可比较的值时如何分配默认值
How to assign default value when array has no value to compare in angularjs
您好,我是 angularjs 的新手,我有以下代码,
HTML
//here i have one more ng-repeat so comparing with this home.home_info_id to avgrating avg.home_inof_id
<div ng-repeat=' home in homeDetailInfo'>
<div ng-repeat="avg in homerating">
<div ng-if="avg.home_info_id==home.home_info_id">
<div class="star" ng-modal="avg" data-score="{{avg.avg}}"></div>
</div>
</div>
我在这里获取数据为
hallrating=[
{"home_info_id":"94","avg":"3.33333333333333"},
{"home_info_id":"119","avg":"4"},
{"home_info_id":"95","avg":"4.5"}
]
所以它非常适合 3 个家庭,但问题是我有四个家庭,第四个家庭尚未评级,所以我需要为那个家庭显示 data-score='0'。
我试过如下
<div ng-repeat=' home in homeDetailInfo'>
<div ng-repeat="avg in homerating">
<div ng-if="avg.home_info_id==home.home_info_id">
<div class="star" ng-modal="avg" data-score="{{avg.avg}}"></div>
</div>
<div ng-if="avg.home_info_id!=home.home_info_id && avg.avg!=''">
<div class="star" ng-modal="avg" data-score="0"></div>
</div>
</div>
not worked for me i also tried
<div ng-repeat=' home in homeDetailInfo'>
<div ng-repeat="avg in homerating">
<div ng-if="avg.home_info_id==home.home_info_id">
<div class="star" ng-modal="avg" data-score="{{avg.avg}}"></div>
</div>
<div ng-if="!avg.avg">
<div class="star" ng-modal="avg" data-score="0"></div>
</div>
</div>
您可以创建一个方法。
$scope.showScore = function(score) {
if (angular.isDefined(score)) {
return score;
} else {
return 0;
}
}
然后在html
<div class="star" ng-modal="avg" data-score="showScore(avg.avg)"></div>
编辑:错过了 avg.avg 周围的 ()。
<div ng-repeat=' home in homeDetailInfo'>
<div class="star" data-score="{{ getScore(home.home_info_id) }}"></div>
</div>
然后在你的控制器中
$scope.getScore = function (homeInfoId) {
var score = 0;
homerating.forEach(function (rating) {
if (rating.home_info_id === homeInfoId) {
score = rating.avg;
}
}
return score;
};
您好,我是 angularjs 的新手,我有以下代码, HTML
//here i have one more ng-repeat so comparing with this home.home_info_id to avgrating avg.home_inof_id
<div ng-repeat=' home in homeDetailInfo'>
<div ng-repeat="avg in homerating">
<div ng-if="avg.home_info_id==home.home_info_id">
<div class="star" ng-modal="avg" data-score="{{avg.avg}}"></div>
</div>
</div>
我在这里获取数据为
hallrating=[
{"home_info_id":"94","avg":"3.33333333333333"},
{"home_info_id":"119","avg":"4"},
{"home_info_id":"95","avg":"4.5"}
]
所以它非常适合 3 个家庭,但问题是我有四个家庭,第四个家庭尚未评级,所以我需要为那个家庭显示 data-score='0'。 我试过如下
<div ng-repeat=' home in homeDetailInfo'>
<div ng-repeat="avg in homerating">
<div ng-if="avg.home_info_id==home.home_info_id">
<div class="star" ng-modal="avg" data-score="{{avg.avg}}"></div>
</div>
<div ng-if="avg.home_info_id!=home.home_info_id && avg.avg!=''">
<div class="star" ng-modal="avg" data-score="0"></div>
</div>
</div>
not worked for me i also tried
<div ng-repeat=' home in homeDetailInfo'>
<div ng-repeat="avg in homerating">
<div ng-if="avg.home_info_id==home.home_info_id">
<div class="star" ng-modal="avg" data-score="{{avg.avg}}"></div>
</div>
<div ng-if="!avg.avg">
<div class="star" ng-modal="avg" data-score="0"></div>
</div>
</div>
您可以创建一个方法。
$scope.showScore = function(score) {
if (angular.isDefined(score)) {
return score;
} else {
return 0;
}
}
然后在html
<div class="star" ng-modal="avg" data-score="showScore(avg.avg)"></div>
编辑:错过了 avg.avg 周围的 ()。
<div ng-repeat=' home in homeDetailInfo'>
<div class="star" data-score="{{ getScore(home.home_info_id) }}"></div>
</div>
然后在你的控制器中
$scope.getScore = function (homeInfoId) {
var score = 0;
homerating.forEach(function (rating) {
if (rating.home_info_id === homeInfoId) {
score = rating.avg;
}
}
return score;
};