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

AngularJS v1.6.6:能否在ng-repeat指令中用变量替换firstP?

AngularJS 1.6.6中ng-repeat用变量替换对象键的解决方案

嘿,刚看到你的问题,作为摸过AngularJS 1.x好几年的老玩家,来给你唠唠怎么解决~当然可以把people['firstP']里的firstP换成变量,这在AngularJS 1.6.6版本里完全可行,核心思路就是利用模板里的方括号语法支持变量解析。

具体实现步骤:

  1. 在控制器中定义变量
    首先你需要把要替换的键名(比如firstP/SecondP)存到控制器的作用域里(不管是$scope还是用controllerAs语法的vm对象都可以)。举个用$scope的例子:

    angular.module('yourApp', [])
      .controller('yourCtrl', function($scope) {
        // 你的原始people对象
        $scope.people = { 
          "firstP": [ "", "James", "Jack" ], 
          "SecondP": [ "", "Bill", "Bob" ] 
        };
        // 定义用来替换的变量,这里可以默认设为'firstP',也可以动态修改
        $scope.activePersonKey = 'firstP';
      });
    
  2. 在模板中使用变量访问对象属性
    把原来的people['firstP']改成people[activePersonKey]就可以了,ng-repeat会自动解析变量对应的键:

    <div ng-repeat="option in people[activePersonKey]">
      {{ option }}
    </div>
    

进阶:动态切换键值

如果需要动态切换显示哪组数据,比如加个下拉框来选择,直接把activePersonKey绑定到下拉框的ng-model就行:

<select ng-model="activePersonKey">
  <option value="firstP">第一组人员</option>
  <option value="SecondP">第二组人员</option>
</select>

<!-- 下拉框切换时,ng-repeat的内容会自动更新 -->
<div ng-repeat="option in people[activePersonKey]">
  {{ option }}
</div>

小提示

这个语法是AngularJS模板表达式的基础特性,1.6.6版本完全支持,不用担心兼容性问题。只要变量在当前作用域中能被访问到,就能用方括号语法来动态访问对象的属性~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:56:41