angularjs ng-repeat没有在ng-model中显示我的数据

时间:2017-07-25 00:57:03

标签: javascript angularjs json angularjs-ng-repeat angularjs-ng-options

我有这个

ng-repeat="directive in vm.directives">

其中循环正确显示我的所有数据

在该循环内我可以做到这一点

{{vm.question.directiveassoc[0].SortOrder}}

并且有效

但是当我尝试做的时候

{{vm.question.directiveassoc[directive.Id].SortOrder}}  that does not work

更重要的是,我希望我的ng-model能够在我的对象中显示数据

ng-model="vm.question.directiveassoc[directive.Id].SortOrder"

为什么不起作用,不应该从我的对象显示数据?

{
  "Id": 105,
  "Name": "yyyyyyyyyyyyy",
  "Description": "yyyyyyyyyyyyyy",
  "Active": true,
  "$$hashKey": "object:98",
  "directiveassoc": [
    {
      "Id": 96,
      "QuestionId": 105,
      "DirectiveId": 1,
      "SortOrder": 99,
      "data": "yyyyyy"
    }
  ]
}

更新

好的,这可行

   ng-model="vm.question.directiveassoc[directive.Id -1].SortOrder"

问题是循环遍历vm.directives,是一个以1开头的对象列表,因为它们的顺序是1到多,并且因为我的另一个vm.question.directiveassoc对象包含相同的指令id,以及sortorder ..如果我-1

有效

因此,由于对象从0开始,我只是减去

虽然

但感觉很狡猾

使用不同的对象真正做这个循环的更好方法是什么?

1 个答案:

答案 0 :(得分:0)

看起来您的指令的Id为1,而不是0。

我建议你在控制器上创建一个方法来获取给定指令id的排序顺序,然后进行正确的数组搜索,找到directiveassoc数组中带有正确{{1}的数组的条目}。

如果使用Lodash或Underscore,DirectiveId方法应该是您所需要的,否则请自行编写。