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

AngularJS实现点击按钮动态添加ng-repeat渲染的通知类型列表

嘿,我来帮你搞定这个AngularJS的列表需求!按照你的要求,我把实现方案拆成控制器逻辑和HTML模板两部分,保证每次点击Add都能新增带默认值的列表,按钮还会自动跟到新列表旁边~

实现方案

1. 编写AngularJS控制器

首先我们需要在控制器里维护一个数组,用来存储所有的通知列表。每个列表项都包含一个存着三个默认值的数组,点击Add按钮时就往这个大数组里push一个新的默认列表项。

angular.module('notificationApp', [])
  .controller('NotificationController', function($scope) {
    // 初始化第一个带默认值的列表
    $scope.notificationLists = [
      {
        types: ['通知类型1', '通知类型2', '通知类型3']
      }
    ];

    // 新增列表的方法
    $scope.addNewList = function() {
      // 每次新增都带上三个默认值
      $scope.notificationLists.push({
        types: ['通知类型1', '通知类型2', '通知类型3']
      });
    };
  });

2. 构建HTML模板

用嵌套的ng-repeat来渲染列表:外层遍历所有通知列表,内层遍历每个列表里的三个默认值。然后利用AngularJSng-repeat自带的$last属性,让Add按钮只出现在最后一个列表的旁边——这样每次新增后,按钮自然就移到新列表旁边了。

<div ng-app="notificationApp" ng-controller="NotificationController">
  <div ng-repeat="list in notificationLists">
    <ul>
      <li ng-repeat="type in list.types">{{ type }}</li>
    </ul>
    <!-- 只有最后一个列表旁显示Add按钮 -->
    <button ng-if="$last" ng-click="addNewList()">Add</button>
  </div>
</div>

核心逻辑说明

  • notificationLists数组:作为所有列表的容器,每一项都是独立的列表对象,保证每个新增列表都有自己的默认值集合,不会互相干扰。
  • 嵌套ng-repeat:外层负责渲染整个列表块,内层渲染每个列表里的三个通知类型,完美实现同款列表的重复渲染。
  • $last判断:这是AngularJS为ng-repeat提供的特殊变量,用来标记当前项是否是数组的最后一项。用ng-if="$last"控制按钮显示,就能让按钮始终跟着最新的列表走。

这样运行起来,默认会显示第一个带三个值的列表,点击Add就会新增一模一样的列表,按钮自动移到新列表旁边,重复点击可以无限循环新增~

内容的提问来源于stack exchange,提问作者Sachin HR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:51:59