将现有对象绑定到复选框以推送和拼接新值

时间:2017-04-15 15:34:24

标签: javascript angularjs checkbox

此应用程序用于向练习添加参数,以便为客户/客户定制。

练习对象看起来像这样(为简单起见,已删除了许多其他值):

{
  "exerciseName": "Squat",
  "Params": [{
      "param": "Sets",
       "childParam" : ""
       }, {
       "param": "Reps",
       "childParam" : ""
   }]
}

我想为用户提供一些复选框,以快速添加/删除Params到此练习中。

options数组目前如下所示:

$scope.availibleParams = [{
    "param": "Reps",
    "childParam": ""
}, {
    "param": "Tempo",
    "childParam": ""
}, {
    "param": "Sets",
    "childParam": ""
}, {
    "param": "Weight",
    "childParam": ""
}, {
    "param": "Rest",
    "childParam": ""
}];

所以在这个特定的例子中,当练习加载param“Reps”的复选框时,“Sets”将被检查,因为它们存在于活动练习中。

检查新的参数后,应将它们推入activeExercise数组,反之亦然,如果未选中则应删除它们。

除此要求外,我还需要能够添加自定义参数。如果上述列表中存在该选项,则用户可以添加一次。一旦他们添加了自定义参数,它应该显示在练习和复选框列表中。

我已经设法尝试查找activeExercise.Params数组并设法ng-repeat选项,但是对此进行绑定并在检查和取消选中时运行所需的添加/删除功能对于我的智商!

我在CodePen上创建了一个Pen来显示我设法到达的位置。

此外,我不知道该帖子的标题是什么,请随时纠正我。

1 个答案:

答案 0 :(得分:0)

我不确定,但也许你需要这个?

我有一个带参数的数组,并且属性 isActive

$scope.availibleParams = [{
    "param": "Reps",
    "isActive": true,
    "childParam": ""
}, ...

https://codepen.io/anon/pen/qmdBeE?editors=1010

更复杂的案例:

我们仍有 isActive 属性,但我们会检查onchange事件是否发生了实际情况,所以

1)我们初始化我们的主动练习,如果它们在 $ scope.activeExercise 中显示,则将可用参数设置为活动状态。看看那个功能:

scope.initActiveExercices()

2)我们在 $ scope.updateActiveExercices()中同步自定义和可用的练习。

首先我们清除 $ scope.activeExercise 数组

然后我们迭代可用和自定义params数组,并查看isActive属性,如果它是真的我们推送到 $ scope.activeExercise 数组

就是这样。

这是新的合作example