【发布时间】:2016-02-29 03:30:38
【问题描述】:
我有这个 JSFiddle 代码:
http://jsfiddle.net/rnnb32rm/285/
<div ng-app="angularjs-starter" ng-controller="MainCtrl">
<fieldset data-ng-repeat="choice in choicesA">
<input type="text" ng-model="choice.name" name="" placeholder="Enter name">
<button class="addfields" ng-click="addNewChoice()">Add fields</button>
<button class="remove" ng-click="removeChoice()">-</button>
</fieldset>
<div id="choicesDisplay">
{{ choicesA }} <br/>
{{ choicesB }}
</div>
</div>
JS:
var app = angular.module('angularjs-starter', []);
app.controller('MainCtrl', function($scope) {
$scope.choicesA = [{id: 'choice1'}, {id: 'choice2'}];
$scope.choicesB = [];
$scope.addNewChoice = function() {
var newItemNo = $scope.choicesA.length+1;
$scope.choicesA.push({'id':'choice'+newItemNo});
};
$scope.removeChoice = function() {
var lastItem = $scope.choicesA.length-1;
$scope.choicesA.splice(lastItem);
};
});
如您所见,我有一个函数addNewChoice(),它将对象添加到数组choicesA,然后根据choicesA 数组上的对象编号添加文本框。
仅当我单击第一个 Add fields 上的第一个 fieldset 按钮时,我才需要将文本框添加到第一个 fieldset,并且我在这些生成的文本框中写入的数据被绑定并添加到单独的对象到choicesB 数组。对于所有其他Add fields 按钮也是如此(因此每个Add field 按钮只能将文本框添加到自己的fieldset 标记中),它们也是根据choicesA 数组中的对象数量生成的。
我什么都试过了,就是想不通。如果有点不清楚,我可以解释更多。非常感谢您。
编辑:谢谢大家的大力帮助,让我解释一下:
我有一个 Spring REST API 和两个名为 Resource & Action 的 Java 对象(JPA 实体),对象 Resource 包含一个 Action 列表,Action 包含对 Resource 的引用。
当我加载一个页面时,我得到一个 Resource 对象的数组,我已经通过 $http.get() 方法从数据库返回,命名为 choicesA,数组的结构是这样的:
[
{"idResource":1, "nameResource": "resName1"},
{"idResource":2, "nameResource": "resName2"}
......etc depends oh how much rows I got from the DB
]
我有另一种方法,$http.post(),它发布一个名为 choicesB 的 Action 对象数组,一个单独的非嵌套数组。数组结构是这样的:
[
{"idAction":1, "nameAction":"nameAction1", "resource":
{"idResource":1, "nameResource": "resName1"},
{"idAction":2, "nameAction":"nameAction2", "resource":
{"idResource":2, "nameResource": "resName2"},
..
}
{...},
{...}
...
]
所以choicesA 数组包含了我用$http.get() 得到的Resource 对象,然后我想在choicesB 数组中填充Action 对象,然后使用$http 保存数组.post(),每个Action 都应该包含一个Resource 对象。例如,如果我单击在第一个 fieldset 标记中添加更多操作,则意味着我要填充 choicesB 数组中的第一个 Action 对象,并将位于 @987654352 中的第一个 Resource 对象分配给它@数组等。
我希望能够决定操作的数量并填写它们,然后将它们保存到choicesB 数组中。但就像我描述的那样,每个操作都与特定的Resource 对象相关。
我希望现在已经清楚了,对不起,再次感谢您。
【问题讨论】:
-
我更新了我的答案。请检查。
-
@StepanKasyanenko 我想要它以不同的方式,但你的例子也很有效,谢谢你一百万!
标签: javascript java angularjs data-binding dynamic-html