我想要在列表中打印出当前的数据结构:
public class Topic
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<FAQ> FAQs { get; set; }
}
public class FAQ
{
[Key]
public int ID { get; set; }
[Required]
public string Question { get; set; }
public string Answer { get; set; }
public DateTime DateCreated { get; set; }
public int Likes { get; set; }
[Required]
public int TopicID { get; set; }
[ForeignKey("TopicID")]
public virtual Topic Topic { get; set; }
}
在我的角度控制器中,我收到一个主题列表,其中包含常见问题解答列表并将其绑定到$ scope.topics。
我已经使用嵌套的ng-repeat打印了所有常见问题解答。
现在我想做一个&#34;前十名&#34;列表,最喜欢的十大常见问题解答。类似的东西:
<ol ng-repeat="faq in faqs(topic.FAQs in topic) | orderBy: 'Likes'">
<li>{{ faq.Question }} - {{ faq.Likes }}</li>
</ol>
我很难如何提取所有常见问题解答的集合。我该如何解决这个问题?
答案 0 :(得分:1)
如果我的答案是正确的,我怀疑你可以从视图中做到这一点,但也许控制器中的观察者可以做到这一点,当然这假设你的主题结构不断变化为常见问题,某些事情像:
假设json结构
{主题:{id:1,名称:&#39; asd&#39;,常见问题解答:[{Likes:324,...},{...},...]},{.. 。},...}
$scope.topics = [...]; // A collection like above
$scope.top_faqs = [];
$scope.$watchCollection('topics', function(){
var i = $scope.topics.length;
while(i--){ //Use while for faster loops
var j = $scope.topics[i].FAQs.length;
while(j--){
$scope.top_faqs.push(topics[i].FAQs[j]);
}
}
// Inject $filter in your controller as a dependency
$scope.top_faqs = $filter('orderBy')($scope.top_faqs, 'Likes', false);
$scope.top_faqs = $filter('limitTo')($scope.top_faqs, 10);
});
现在,在您的视图中,您只需对$scope.top_faqs
<ol ng-repeat="faq in top_faqs">
<li>{{ faq.Question }} - {{ faq.Likes }}</li>
</ol>