对 Angular(以及整个 MEAN 堆栈)非常陌生。
我有一个 MongoDB 数据库集合,如下所示:
db.users({
username: "Test1",
fname: "Bob",
lname: "Saget",
email: "test@test.com",
password: "12345",
status: [{
active: false,
"non-active": false,
suspended: true,
"un-confirmed": false,
banned: false
}]
})
我只是希望将所有用户打印到屏幕上。并且一直在成功地做到这一点,就像这样。
<tr ng-repeat="user in users">
<td>{{user.username}}</td>
<td>{{user.fname + ' ' + user.lname}}</td>
<td>{{user.email}}</td>
<td>{{user.password}}</td>
<td></td>
</tr>
我的问题是尝试根据 bool 值显示状态数组的字段(而不是值)。因此,在该示例中,它将在页面上读取“挂起”而不是“true”(并且仅返回真实值 - 其中只有一个)。
我是否变得斗鸡眼了,对于这种类型的功能是否有更好的数据库结构可以遵循?
我尝试了 ng-if 和 ng-repeat 与过滤器:{} 选项的组合。
如果需要,我可以提供额外的详细信息。
你们会怎么做?
非常感谢
最佳答案
获取用户后,您可以浏览它们并像这样更新状态。
angular.forEach($scope.users, function(a, b){
var user = a;
var status = a.status[0]; // <-- because your status are an array we pick the first one.
for (var k in status) {
if (status.hasOwnProperty(k)) {
if (status[k]) { // <-- if status is true then get the key.
user.status = k; // <-- set the user status object to the key.
}
}
}
});
您可以将 user.status = k
更改为您想要的任何内容,将其设置为 status 会覆盖状态数组。
工作示例 -> http://jsbin.com/zarulo/1/edit?html,js,output
希望这有帮助!
关于javascript - 根据值过滤器从数组中选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30532166/