簡體   English   中英

僅在用戶被標記且未完成時才顯示帖子| 角火 | 離子

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM