You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Angular与EJS的for循环代码,实现数据库no列值遍历

问题分析与修复方案

你现在的核心问题是混淆了后端EJS模板渲染和前端AngularJS数据绑定的执行时机,导致代码逻辑完全冲突,下面一步步给你解决:

为什么之前的代码会异常?

  1. EJS是在服务器端执行渲染的,这时候AngularJS的{{}}插值表达式还没有被解析(Angular是在客户端浏览器里运行的),所以你写的<% for (var i=0; i < {{gridOptions4[i].name}}; i++) { %>完全无效——服务器根本不知道gridOptions4是什么,循环条件直接报错。
  2. 就算循环能跑,你模板里一直用gridOptions4[0],只会重复渲染第一个元素,根本没遍历所有数据。

正确的修复方式

因为你的数据是通过AngularJS的$http从后端异步获取的,应该用Angular的前端指令来处理循环,彻底移除EJS的for循环:

步骤1:优化AngularJS控制器代码

把获取到的数据赋值给更清晰的变量名,方便模板使用:

var app = angular.module('myApp', []);
app.controller('BasicCtrl20', function($scope, $http) {
  $http.get("/concept_db")
    .then(function(response) {
      // 将后端返回的数据集赋值给$scope.items,供模板遍历
      $scope.items = response.data;
    });
});

步骤2:修改EJS模板(改用Angular的ng-repeat)

用Angular的ng-repeat指令遍历数据,并且绑定每个元素的对应属性:

<!-- 使用ng-repeat遍历$scope.items数组,item代表当前循环的每一项 -->
<div ng-repeat="item in items" class="{{item.class}}">
  <div class="gallery-item">
    <a href="{{item.main_href}}">
      <div class="gallery-item-image">
        <img ng-src="{{item.imgsrc}}">
      </div>
    </a>
    <div class="gallery-item-description">
      <p align="center">{{item.name}}</p>
    </div>
  </div>
</div>

额外说明

  • 如果你想获取no列的所有值,在Angular控制器里可以通过$scope.items.map(item => item.no)来提取,或者在模板里用{{item.no}}直接显示。
  • 永远记住:EJS负责服务器端的初始渲染,AngularJS负责客户端的动态数据绑定和交互,两者不要混写逻辑,否则会因为执行时机不同导致各种异常。

内容的提问来源于stack exchange,提问作者鞝勳頊�,angularjs;ejs"

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:39:22