我正在尝试一个角度程序,但无法返回正确的值:
function facilityChecked(facility, search) {
var result;
search.filter(
function (v) {
var rtn = (v["facility_Item"]["text"] == facility);
if (rtn) {
var checked = (v.inherit_To_Service === 'true');
result = checked;
}
else {
result = false;
}
}
);
return result;
}
在下面的代码中,$ scope.parking应为true,$ scope.toilet应该为false但是它们都返回false?
parking = facilityChecked('Parking', rtn.Organisation.Facility);
$scope.parking = parking;
toilet = facilityChecked('Toilet', rtn.Organisation.Facility);
$scope.toilet = toilet;
答案 0 :(得分:1)
此函数使用filter
循环遍历数组中的每个项目,因此始终将结果设置为数组中最后一项的值...
启动初始化result
,如果找到该值,则将其解析出项目
function facilityChecked(facility, search) {
var result = false;
search.filter(
function (v) {
var rtn = (v["facility_Item"]["text"] == facility);
if (rtn) {
var checked = (v.inherit_To_Service === 'true');
result = checked;
}
}
);
return result;
}
答案 1 :(得分:0)
这里的问题在于search.filter()中的else部分;实际上,search.filter()函数正在为所有Json对象执行。因此,它存储并返回最后一个对象值,即false"。 我认为,其他部分是没有必要的,因为你从data.json中获取值。
function facilityChecked(facility, search) {
var result;
search.filter(
function(v) {
var rtn = (v["facility_Item"]["text"] == facility);
if (rtn) {
var checked = (v.inherit_To_Service === 'true');
result = checked;
}
}
);
return result;
}
更新了Plunker:http://plnkr.co/edit/SETl5Zqapsdp8FmB6t56?p=preview