Angular.js ng-repeat with conditional

时间:2015-12-16 17:23:44

标签: javascript angularjs

我正在使用ng-repeat迭代键/值数组。如果键=='名字'我想将它绑定到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>

2 个答案:

答案 0 :(得分:1)

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

的原因

我能想到的两种方法

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

答案 1 :(得分:1)

来源: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

你可能正在做的事情在概念上是错误的,你需要使用一组对象吗?

相关问题