【问题标题】:Angularjs for inside Controller running just once用于内部控制器的 Angularjs 只运行一次
【发布时间】:2015-08-26 03:58:56
【问题描述】:

我正在尝试存储 obj 数组的 id,但似乎这个 for 循环只运行了一次,很奇怪

  for (var i = 0; i < softwareIds.length; i++) {
    var b = softwareIds[i].id;
  }

  console.log(b);
  console.log(softwareIds);

控制台的最后两行返回: (数字2是第一个console.log返回最后一个obj id,第二个console.log中是[Object, Object, Object])

我正在使用 angujarJS,这是在控制器中,你知道吗?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    你应该先声明数组。见下文

    $scope.b = [];
      for (var i = 0; i < softwareIds.length; i++) {
          $scope.b.push(softwareIds[i].id);
      }
    
    console.log(b);
    

    您的 for 循环工作正常,但您每次都覆盖存储在变量中的值。您应该将 id 值推送到数组中。

    【讨论】:

    • 试试&lt;p ng-repeat="item in softwares"&gt; {{ item }}&lt;/p&gt;。它会工作:-)
    【解决方案2】:

    您的循环运行了 3 次。你不断更新 b 的值。

    【讨论】:

    • 而最后b只存储数组的最后一个值
    【解决方案3】:

    您在 AngularJS 控制器中使用此代码的事实与您的体验没有任何关系。这是一个常见的事情,console.log(b) 行代码只会在 for 循环完成它自己的事情并且当 for 循环完成时 b 变量将有最后一个项目 id 的值。

    另外,为了存储对象 ID 数组,因为您需要使用一个数组,您在这个问题上的回答差不多。

    var ids = [];
    
    for (var i = 0; i < softwareIds.length; i++) {
        ids.push(softwareIds[i].id);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      相关资源
      最近更新 更多