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

AngularJS ng-repeat失效:无法按每行3个循环渲染卡片

问题分析与解决方案

嘿,我帮你排查下这个问题哈!你遇到的是AngularJS没有正确编译页面,导致{{}}表达式和指令直接显示成文本,同时卡片布局也没生效的情况,咱们一步步来解决:

1. 修正ng-app的位置

你把ng-app="inLineClient"放在了<head>标签里,这会导致AngularJS只编译<head>内的内容,页面主体的<body>部分完全没被处理。正确的做法是把ng-app放在<html>或者<body>标签上,让AngularJS管理整个页面的DOM:

<html ng-app="inLineClient">
<!-- 或者直接放在body上 -->
<body ng-app="inLineClient">

2. 必须引入AngularJS核心脚本

你的代码里没看到引入AngularJS库的语句——没有加载这个核心库的话,所有AngularJS的指令和表达式都不会被解析,直接显示成原始文本。记得在<head>或者<body>末尾加上:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>

3. 实现每行3个卡片的循环渲染

结合Bootstrap的栅格系统和AngularJS的ng-repeat指令,就能轻松实现每行3个卡片的布局。需要用row包裹卡片组,每个卡片使用col-md-4(中等屏幕及以上每行显示3个,小屏幕会自动堆叠),同时确保控制器和数据正确绑定。

完整修正后的示例代码

<!DOCTYPE html>
<html ng-app="inLineClient">
<head>
    <meta charset="utf-8">
    <title>Client App | InLine</title>
    <!-- 补全Bootstrap样式链接 -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <!-- 引入AngularJS核心库 -->
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
    <script>
        // 定义AngularJS模块和控制器
        angular.module('inLineClient', [])
        .controller('CardController', function($scope) {
            // 模拟卡片数据
            $scope.cards = [
                {title: '卡片1', content: '这是第一张卡片的内容'},
                {title: '卡片2', content: '这是第二张卡片的内容'},
                {title: '卡片3', content: '这是第三张卡片的内容'},
                {title: '卡片4', content: '这是第四张卡片的内容'},
                {title: '卡片5', content: '这是第五张卡片的内容'},
                {title: '卡片6', content: '这是第六张卡片的内容'}
            ];
        });
    </script>
</head>
<!-- 绑定控制器,让视图能获取到数据 -->
<body ng-controller="CardController">
    <div class="container mt-4">
        <div class="row">
            <!-- 循环渲染卡片,每个占1/3宽度 -->
            <div class="col-md-4 mb-3" ng-repeat="card in cards">
                <div class="card">
                    <div class="card-body">
                        <h5 class="card-title">{{card.title}}</h5>
                        <p class="card-text">{{card.content}}</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

额外注意点

  • 确保用ng-controller把控制器绑定到页面上,否则$scope里的数据无法传递到视图。
  • 你的原Bootstrap样式链接是截断的,要补全成完整的bootstrap.min.css链接。
  • 如果需要严格控制每3个卡片换一行,可以用ng-repeat的$index结合ng-if手动插入<div class="row">,不过Bootstrap栅格系统默认会自动换行,一般不需要额外处理。

内容的提问来源于stack exchange,提问作者Khalid Talakshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:52:26