我在兑现承诺方面遇到了小问题。我正在尝试使用网格上的简单信息制作一个可扩展的表格,然后单击并展开它会更详细。而且效果很好。我的问题是,当您扩展网格一会儿(例如0.5-1s)时,您会看到旧的附件列表(来自以前检查过的新闻),而后解决了重新约定的承诺。
到目前为止,这是我的代码:控制器和部分服务(矩形):http://pastebin.com/ViBpXuhr
HTML代码:http://pastebin.com/K9ZPWScc
由于当前的数据模型,我无法真正更改,我认为我必须那样做,或者至少我没有其他想法。因此,当用户看到网格并单击要检查的行时,我运行了以newsId为参数的getAttList函数,并通过我需要的服务列表返回,但是表已经扩展但用户完全看不到任何数据的时间很短(因为他没有扩展或之前检查过的新闻中的数据。
通常,我使用$ q处理诺言,但是在那种情况下,我不确定该怎么做。
最佳答案
为了避免显示以前检查过的新闻中的数据,每次$scope.attachments = null;
值更改时都要执行$scope.newsIdExpanded
。您可以轻松地在$scope.selectTableRow
函数上执行此操作,因为您具有先前选择的($scope.newsIdExpanded
)和新的(newsId
)ID,只需将两者进行比较以查看它们是否不同:
if ($scope.newsIdExpanded != newsId) {
$scope.attachments = null;
}
由于请求是异步的,因此在加载内容时不显示任何内容是正常的。例如,您可以在
attachments == null
时显示加载图标。关于javascript - Angular 数据绑定(bind)和 promise 处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25670071/