【问题标题】:Value only showing latest in array using $scope AngularJS值仅使用 $scope AngularJS 在数组中显示最新
【发布时间】:2017-09-17 08:09:22
【问题描述】:

所以我试图在选择日历上的日期时显示某些数据(日记条目)(参见图片)

Image of calendar.

Image of result when a date with journal entry is picked.

所以当一个日期被选中并且数组中有一个日记条目时,它将显示在底部的卡片上。

我的问题:

所以我的问题是,当我有多个条目并且我选择除最后一个输入之外的任何条目时,它们不会显示。但是当我选择最后一个条目时,它显示得很完美。

我的代码:

$scope.journalData = {};
for (var i = 0; i < $scope.entryArray.length; i++) {
  if ($scope.entryArray[i].date == $scope.startDate.text) {
    $scope.journalData = $scope.entryArray[i];
    console.log($scope.journalData);
  } else {
    $scope.journalData = {};
  }
}
<div class="card">
   <div class="item item-divider">
    {{journalData.date}}
  </div>
  <div class="item item-text-wrap">
    {{journalData.text}}
  </div>
</div>

$scope.entryArray 是一个来自本地存储的数组,它保存所有日志条目,如下所示:

var entry = { date: $scope.startDate.text, text: $scope.formData.journalEntry }

如您所见,只要日期与所选日期匹配,我就会控制台日志。假设我今天(4 月 20 日)、明天和后天有 3 个条目。这是输出:

{date: "Thu Apr 20 2017", text: "asdfasdf"} {date: "Fri Apr 21 2017", text: "asdfasdfasdf"} {date: "Sat Apr 22 2017", text: "asdfasdfasdf 3"}

并在 3 日更改日期。卡片在屏幕底部显示数据(应该如此)。

谁能帮我弄清楚为什么当我控制台日志时它只显示第三个条目并且它存储在正确的变量中?

【问题讨论】:

  • 删除 else 块,它应该可以正常工作。
  • 好的。超级容易修复....为什么会导致问题???
  • 我已经在下面的答案中解释过了。

标签: javascript angularjs ionic-framework angularjs-scope


【解决方案1】:

当您选择第一个日期时,journalDataforloop 的第一次迭代中具有正确的值。但在下一次迭代中,由于if 块中的日期不匹配,它会执行else 块,因此journalData 变量再次为空。

如果您删除 else 块,它应该可以工作。由于您在 for 循环开始之前已将 journalData 设置为空白,因此您不需要 else 块。

此外,您可以通过在找到匹配项后添加break 来进一步优化您的代码。它会是这样的:

for (var i = 0; i < $scope.entryArray.length; i++) {
  if ($scope.entryArray[i].date == $scope.startDate.text) {
    $scope.journalData = $scope.entryArray[i];
    console.log($scope.journalData);
    break;
  } else {
    $scope.journalData = {};
  }
}

在这种情况下,一旦日期匹配,它将打破for 循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-16
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多