在角度js中向对象添加数组属性

时间:2015-07-11 14:39:37

标签: javascript angularjs

我有一个名为user的对象:

它具有user.nameuser.age e.tc。

等属性

现在,我需要通过ng-model将数组添加到名为subjects的用户对象。

这就是我在ng-repeat中所做的:

    <input type="text" ng-model="user.subjectname[$index]" 
  name="subject" ng-required="true" placeholder="Enter a subject name">

当我console.log(user.subjectname)时,它看起来像这样:

enter image description here

现在,在此之后,我想做这样的事情:

<div ng-repeat="data in user.sujects">
                  <td>{{data}} </td>
                   </div>

但它不起作用。

Try2:

在我从控制器调用的服务中,我尝试了这个,

        if(dataArray== null)
                var dataArray=[];

            console.log("scop.user.subjectname...................." + user.subjectname);
            for(var i in user.subjectname)
            {   dataArray.push(user.subjectname[i]) 
            }
            user.data=dataArray;

所以,现在,如果我这样做,

 <div ng-repeat="data in user.data">
                      <td>{{data}} </td>
                       </div>

我仍然一无所获。

我可以指点处理这个吗?

1 个答案:

答案 0 :(得分:2)

就像我在your previous question告诉你的那样,并在a jsbin中展示。

您需要使用(key, val) in object语法从user.subjectname

中获取这些值
ng-repeat="(key, val) in user.subjectname" ng-bind="val"

如果需要将此对象转换为数组:

$scope.arr = [];

Object.keys(user.subjectname).forEach(function (key) {
  arr.push(user.subjectname[key]);
});

然后,如果你需要输出那个

ng-repeat="a in arr" ng-bind="a"

编辑:经过您的进一步解释后,我假设this jsBin突出显示您所追求的内容。