AngularJS访问动态对象属性

时间:2017-05-20 12:05:21

标签: javascript angularjs

我正在构建一个MEAN堆栈应用程序。我的一个架构属性是无模式的。

var UserSchema = new Schema({
    name: String,
    age: Number,
    personalities: {}
}, {strict: false});
var User = mongoose.model('User', UserSchema);

在我的用户架构中,个性是无模式的,因为我有一个动态数据,我需要输入这些个性。

这是我的示例数据库:

Sample database

正如你所看到的,第一个用户有三个人格(星座,体重和身高),第二个人有(工作,想法和爱好)。

在Angular方面,我的问题是,如何从个性中显示动态数据?

以下是示例代码

<h1>Name: {{user.name}}</h1>
<h1>Age: {{user.age}}</h1>
<h1>Personalities: {{user.personalities}}</h1>

现在在这个代码上,就个性而言,它将显示个性的JSON对象。如何动态显示个性?

因为我不能做这样的事情

<h1>Horoscope: {{user.personalities.horoscope}}  </h1>
<h1> weight: {{user.personalities.weight}} </h1>
<h1>height:  {{user.personalities.height}} </h1>

这只会为1个用户提供服务,因为我的个性是无模式的。有没有办法在Javascript中动态访问对象的属性和属性?所以我可以为所有具有不同个性的用户提供服务。我想要实现的是这样的:

  1. 获取Personities对象的长度(我研究过Underscore库可以执行此操作
  2. 一旦我有了长度,现在我需要在对象中的“attribute:value”中获取属性,这样我就可以把它放在“h1”这样的
  3. <h5>{{user.personality.firstAttribute}}: {{user.personality.firstValue}}</h5>
    <h5>{{user.personality.secondAttribute}}: {{user.personality.secondValue}}</h5>
    

    依此类推,直到它达到物体的最大长度。

1 个答案:

答案 0 :(得分:1)

您可以使用ng-repeat来迭代用户。然后嵌套另一个ng-repeat来迭代单个用户的个性的属性:

<div ng-repeat="user in users">
    <h1>Name: {{user.name}}</h1>
    <h1>Age: {{user.age}}</h1>
    <h1 ng-repeat="(key,val) in user.personalities">{{ key }}: {{ val }}</h1>
</div>