有条件的Angular.js ng-repeat

最后发布: 2015-12-16 17:23:43


问题

我正在使用ng-repeat遍历键/值数组。 如果键=='First Name',我想将其绑定到firstName。 我是angular.js的新手,也许有更好的方法可以做到这一点? 基本上,我有一个键/值数组,并且我想对其中的一些键进行处理。

<ul id="customers" infinite-scroll='loadMoreUsers()'>
        <li ng-repeat="user in users" data-customer-id="{{user.Id}}">

               <h4>{{user.firstName}} {{user.lastName}}</h4>

            <div ng-repeat="(key, value) in user.AttributeBag">
                <span ng-if="key == 'First Name'">{{user.firstName = value}}</span>
                <span ng-if="key == 'Last Name'">{{user.lastName = value}}</span></span>

                <span ng-if="key != 'First Name' && key != 'Last Name'">{{key}} : {{value}}</span>
            </div>
        </li>
    </ul>
javascript angularjs
回答

ng-if创建它自己的子范围,这就是为什么您无法访问key

我能想到的两种方法

  1. 使用ng-show代替ng-if ng-show不会创建自己的作用域。
  2. 使用$parent访问父范围。 但是,您在ng-repeat中使用的是user.AttributeBag的抽象,因此需要进行一些调整。


回答

来源: http : //www.w3schools.com/js/js_arrays.asp

JavaScript不支持带有命名索引的数组。 在JavaScript中,数组始终使用编号索引。 警告 !! 如果您使用命名索引,JavaScript会将数组重新定义为标准对象。 之后,所有数组方法和属性将产生错误的结果。

var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length;         // person.length will return 0
var y = person[0];             // person[0] will return undefined

可能您的操作在概念上是错误的,您需要使用对象数组吗?