[英]Only show post if user is tagged in it and its not completed| angularfire | ionic
嗨,我正在制作一個應用程序來跟蹤我們的朋友組費用。
用戶登錄,應用程序創建一個帳戶(基於 facebook 帳戶)
在此之后,用戶會轉到“未結付款”頁面。 我想根據當前用戶是否被標記來過濾項目數組。
<div class="list card" ng-repeat="post in posts | openPayments:loggedInUserId">
<div class="item">
<h2>{{post.naam}}</h2>
</div>
<div class="item item-body">
<p>
{{post.onderwerp}}
</p>
<h2>${{post.prijs}}</h2>
</div>
<div class="item" ng-repeat="post in post.users">
<h2>{{post.naam}} | {{post.voltooid}}</h2>
</div>
</div>
帶有數據的json
"posts" : {
"post1" : {
"naam" : "Event cards",
"onderwerp" : "de kaarten voor het concert van nickelback",
"prijs" : "60.-",
"users" : {
"1056952907701290" : {
"naam" : "Facebook Name1",
"voltooid" : false
},
"1230912128457790" : {
"naam" : "Facebook name2",
"voltooid" : true
}
}
}
因此,如果我使用用戶 ID 1056952907701290
登錄,我只想查看我被標記的帖子並且不是“voltooid”。
我的控制器
app.controller('LandingCtrl', function($scope, $state, credentials, $filter, currentUser, $firebaseObject, $firebaseArray) {
//array
var ref = new Firebase("https://bla.firebaseio.com/posts");
$scope.posts = $firebaseArray(ref);
console.log($scope.posts);
$scope.newItem = function(){
$state.go("app.newItem");
}
//username
$scope.username = currentUser.facebook.displayName;
$scope.loggedInUserId = currentUser.facebook.id;
console.log($scope.username);
console.log($scope.loggedInUserId);
})
app.filter("openPayments", function() {
return function(input, username) {
var returnArr = [];
// Go over each post
for(var i in input) {
// Go over each user
angular.forEach(input[i].users, function(value, key) {
console.log("key " + key);
console.log(input);
console.log("username " + username);
// If it's the user we're looking for and voltooid is true, add the item to the array
if(key == username && value.voltooid) {
returnArr.push(input[i]);
}
});
}
return returnArr;
}
});
我做了一些研究,但無法真正找到如何過濾子屬性。
angular.module('yourModule')
.filter("openPayments", function() {
return function(input, userId) {
var filteredArr = [];
// Go over each post
for(var i in input) {
// Go over each user
for(var j in input[i].users) {
// If it's the user we're looking for and voltooid is true, add the item to the array
if(j == userId && input[i].users[j].voltooid) {
filteredArr.push(input[i]);
}
}
}
return filteredArr;
}
});
然后你可以像這樣使用它:
<div class="list card" ng-repeat="post in posts | openPayments:loggedInUserId">
...
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.