我在兑现承诺方面遇到了小问题。我正在尝试使用网格上的简单信息制作一个可扩展的表格,然后单击并展开它会更详细。而且效果很好。我的问题是,当您扩展网格一会儿(例如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/

10-12 14:10
查看更多