我正在使用ng-repeat来显示我的数据,这部分工作得很好。
我的ng-repeat结果集中的一个数据字段是项的数组。
以下是我的标记
有人要求更多代码,下面是它。我忘了提到这是一个MEAN应用程序。我使用MongoDB提供数据。我对数据调用使用REST API。
(编辑)来自angular模块的代码:
我的ng-repeat结果集中的一个数据字段是项的数组。
例如:{x:1, y:[2,3,4]}
我希望通过数组内的数据来过滤数据。我可以轻松地通过非数组数据进行过滤,但是当我尝试通过查找数组内部时,我遇到了麻烦。以下是我的标记
ng-repeat = "con in cons | filter: usrSingle.username in con.conPlayerList"
(编辑标记以更好地匹配我的示例 ng-repeat = "con in cons | filter: '3' in con.y"
)
usrSingle是此控制器中可以访问的作用域。我没有收到任何错误信息,也找不到此类示例。有人要求更多代码,下面是它。我忘了提到这是一个MEAN应用程序。我使用MongoDB提供数据。我对数据调用使用REST API。
(编辑)来自angular模块的代码:
// call to the api for data
app.factory('usrService', function ($resource) {
return $resource('/api/users', {});
});
// factory to hold user data between controllers
app.factory('usrTracker', function () {
var vUsrProfile = {
usrSingle: 'usrSingle'
};
return {
getProperty: function () {
return vUsrProfile;
},
setProperty: function (value) {
vUsrProfile = value;
}
};
});
// angular controller
app.controller('usrPageController', function ($scope, usrTracker, conService, postService) {
var usrSingle = usrTracker.getProperty();
$scope.usrSingle = usrSingle;
$scope.cons = conService.query();
$scope.posts = postService.query();
});
(最终编辑)此答案对于这个问题是一个很好的解决方案。但我选择了另一条路。我使用了mongoDB的$unwind聚合来展开我的数据,如下所示。
API文件中的代码:
// get
.get(function (req, res) {
// unwind on the conPlayerList array field
Con.aggregate([{ $unwind: "$conPlayerList" }], function (err, cons) {
return res.json(cons);
});
})
然后我按照我要查找的用户进行了筛选。将HTML Angular标记更改为:
ng-repeat="con in cons | filter:{conPlayerList:usrSingle.username}"
为了更好地匹配我的示例,通过删除我的特定代码,它应该是:
ng-repeat="con in cons | filter: {y:'3'} "