0
將對象從一個陣列推到另一個陣列所以我有一個新聞文章的列表,我需要它們被過濾,但服務器端不是客戶端。基於參數
我過濾的方法是通過一個下拉列表,用戶點擊篩選文章,像這樣:
<ul>
<li ng-repeat="category in categories">
<span href="" ng-click="getFilteredArticles(category.id)">{{category.title}}</span>
</li>
</ul>
和文章都通過NG重複填充,像這樣
<ul infinite-scroll="addPosts()" infinite-scroll-distance="0" infinite-scroll-disabled="stopScrolling" class="c-news">
<li ng-repeat="post in posts" class="c-news__item" ng-click="selectPost(post)">
<!-- Omitted some code for the sake of brevity -->
</li>
</ul>
的getFilteredArticles方法看起來像這樣
$scope.getFilteredArticles = function (categoryId) {
var posts = $scope.posts;
posts.forEach((object) => {
if (object[Categories.Id] === categoryId) {
$scope.filteredArticles.push(object);
}
});
console.log($scope.filteredArticles);
}
一個典型的JSON對象,我很p通過外觀ulling這樣
{
"Title":"Test Title",
"Summary":"",
"PublishedDate":"2016-10-17T09:42:00",
"Author":{
"Id":"480586a5-2169-e611-9426-00155d502902",
"FirstName":"TestFirst",
"LastName":"TestSecond",
"Email":"[email protected]"
},
"Id":99,
"StatusName":"Published",
"Status":2,
"Categories":[
{
"Id":1,
"Name":"Category 1",
"ArticleCount":31,
"UnpublishedArticleCount":1
},
{
"Id":2,
"Name":"Category 2",
"ArticleCount":19,
"UnpublishedArticleCount":0
}
],
"AttachmentCount":0,
"FilesAwaitingCheckIn":0
}
我想什麼發生的是,當用戶點擊過濾器的選擇之一,在列表中,然後過濾到單擊選擇。我有這麼遠,但後來我得到一個ReferenceError:分類沒有定義。
我基於我的getFilteredArticles()代碼從另一個Stack問題,可以發現here。
我知道能夠過濾ng-repeat,但是我的管理員不想走這條路線,而寧願過濾服務器端,因爲我們可能會有帖子數量。
任何想法?
編輯 這裏是裏面有什麼$scope.posts array
如果'Categories'是'posts'的屬性,則應該像這樣定義它 'object [「Categories」] [「Id」] === categoryId' – Nishant123
感謝那個Nishant,那讓我失去了那個錯誤。現在console.log只是吐出一個空的數組。這是否可以歸因於每個類別ID都位於Categories對象內的單獨對象內? – Alsh
我猜'if'條件沒有被滿足。你已經使用了一個嚴格的檢查'==='。檢查兩種類型是否相同。 ''2「'和'2'之間有區別。在'if'條件之前調試循環內的值 – Nishant123