我有一个让我疯狂的奇怪问题
我基本上有一个不同类型的文章列表:新闻,推文和视频
我正在渲染它们:
<div ng-repeat="item in items | orderBy:-timestamp track by item.id" ng-switch="item.type">
<?php
include("templates/ang-youtube.html");
include("templates/ang-tweet.html");
include("templates/ang-news.html");
?>
</div>
在每个包含内部我都在做这样的事情:
<div class="item" masonry-brick ng-switch-when="news">
...content in here
</div>
或
<div class="item" masonry-brick ng-switch-when="tweet">
...content in here
</div>
或
<div class="item" masonry-brick ng-switch-when="youtube">
...content in here
</div>
现在问题是youtube项目总是先呈现。项目的顺序(时间戳)被忽略。推文和新闻项目虽然可以正确呈现。
如果我删除开关并将项目列为文本,那么一切都按正确顺序排列。一旦我添加了开关,youtube项目就会再次呈现。
任何想法我做错了什么?
我试过在ng-repeater中移动开关,如下所示:
<div ng-repeat="item in items | orderBy:-timestamp track by item.id">
<div ng-switch="item.type">
<?php
include("templates/ang-youtube.html");
include("templates/ang-tweet.html");
include("templates/ang-news.html");
?>
</div>
</div>
但它没有任何区别。始终首先呈现youtube项目。
如果我检查$ scope.items数组,则按时间戳正确排序。
我也尝试过使用ng-if代替开关但得到相同的结果
有什么想法吗? : - (
还尝试使用像这样的ng-include:
<div ng-include="'templates/ang-{{item.type}}.html'"></div>
但这不起作用