【问题标题】:Creating Dynamic ng-model in AngularJS在 AngularJS 中创建动态 ng-model
【发布时间】:2014-08-28 07:16:12
【问题描述】:

以下是工作代码 - http://plnkr.co/edit/6lRhiTd1BrKRdThY0WNB?p=preview

如果您从下拉列表中选择数字并填写数据,然后单击并检查控制台,您将看到类似的结果 -

[
    Object { start_time="12Start", end_time="12END"},
    Object { start_time="34start", end_time="786"},
    Object { start_time="123", end_time="5656"},
    Object { start_time="098", end_time="77"},
    Object { start_time="75757", end_time="57567"}
]

现在如果你检查,有两个数组 - $scope.shiftstart | $scope.shiftend

我正在遍历这些,但这种方法的一个问题是-

1) 需要依赖数组的等长。

2) 如果有人离开了第一个结束时间输入字段,那么它会在控制台中显示为 undefined。

我的想法是不要使用 - 单独的 ng-model="shiftstart[shiftnumber]" 和 ng-model="shiftend[shiftnumber]" 而是我可以使用一个包含多个对象的单个数组,但我无法集成解决方案,让我知道我可以在我的代码中修改什么实现这一目标。

【问题讨论】:

  • 我没有胶水,你实际上想要做什么......
  • @Yoshi 我希望 ng-model="shiftstart[shiftnumber]" 和 ng-model="shiftend[shiftnumber]" 像 ng-model="shift.start_time[shiftnumber]" 和 ng-model="shift.end_time[shiftnumber]" 一样用作单个实体,以便它产生相同的对象结果数组

标签: javascript html angularjs loops angularjs-scope


【解决方案1】:

如果我确实正确理解了您的问题,我认为您的事情过于复杂了。如果你只是想:

  • a) 有一个班次列表,可以从中选择一个班次,并且
  • b) 能够编辑所选班次

那么您只需要以下内容:

ctrl:

$scope.shifts = [
  { nr: 1, start_time: "12Start", end_time: "12END" },
  { nr: 2, start_time: "34start", end_time: "786"   },
  { nr: 3, start_time: "123",     end_time: "5656"  },
  { nr: 4, start_time: "098",     end_time: "77"    },
  { nr: 5, start_time: "75757",   end_time: "57567" }
];

$scope.active = null;

查看演示:

<h3>Select a shift</h3>
<select
  data-ng-model="active"
  data-ng-options="shift as shift.nr for shift in shifts"
></select>

<div data-ng-show="active">
  <h3>Edit start/end</h3>
  start time <input data-ng-model="active.start_time"><br>
  snd time <input data-ng-model="active.end_time">
</div>

演示:http://jsbin.com/fibilalaciha/1/

【讨论】:

  • 是的,我认为如果我提供预先填写的数据会更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多