【发布时间】:2015-07-22 18:32:33
【问题描述】:
SelectedPlayers我正在一个使用 jQuery 模板的网站上做一些工作。
我有一个 JSON 对象:
var data = [{
"CoachingSessionActivityID": 1,
"PlayersInTeams": [{"PlayerID": 1, "PlayerName": "Some Name"},{"PlayerID": 2, "PlayerName": "Another Name"}],
"SelectedPlayers":[{"PlayerID": 1, "PlayerName": "Some Name"}]
},{
"CoachingSessionActivityID": 2,
"PlayersInTeams": [{"PlayerID": 1, "PlayerName": "Some Name"},{"PlayerID": 2, "PlayerName": "Another Name"}],
"SelectedPlayers":[{"PlayerID": 1, "PlayerName": "Some Name"}]
}];
如果当前迭代 PlayerID 在选定的玩家对象中,我正在尝试将选择选项(由 Bootstrap-Multiselect 提供支持)标记为已选择。
<select id="playersList_${CoachingSessionActivityID}" class="form-control players-list" multiple="multiple" name="playersList">
{{each(PlayerID, PlayerName) PlayersInTeams}}
{{if checkForValue(SelectedPlayers == PlayerID)}}
<option value="${PlayerID}" selected="selected">${PlayerName}</option>
{{else}}
<option value="${PlayerID}">${PlayerName}</option>
{{/if}}
{{/each}}
</select>
我正在使用此函数来识别玩家是否在所选列表中:
function checkForValue(json, value) {
for (key in json) {
if (typeof (json[key]) === "object") {
return checkForValue(json[key], value);
} else if (json[key] == value) {
return true;
}
}
return false;
}
问题
问题是只有 1 项被识别为选定值。我们的实际数据在“PlayersInTeams”中有 150 名球员,一些教练课程有超过 20 名选定球员。
有什么想法吗?
【问题讨论】:
-
因为你在条件为真时结束函数操作。你需要迭代完整的列表。为什么你调用与链相同的函数?
-
不应该
{{if checkForValue(SelectedPlayers == PlayerID)}}是{{if checkForValue(SelectedPlayers, PlayerID)}}否则它会将布尔值传递给函数? -
对不起,你是对的 Ishettyl ,我正在这样做。我只是侵入了我的代码以删除敏感数据,却忘记为帖子修复它。这是一个很好的观点@ARUNRAJ
标签: javascript jquery jquery-templates