您好我是Angularjs的新手请帮助我尝试创建一个动态表单字段我的HTML就是这样
<div ng-repeat="cb in categories">
<div ng-repeat="choice in cb.choices">
<input type="text" ng-model="choice.req_goods">
<input type="text" ng-model="choice.qty">
<button ng-hide="$first" ng-click="removeChoice($parent.$index,$index)">-</button>
</div>
<button type="button" ng-click="addNewChoice($index)">+</button>
</div>
JS
$scope.categories = [
{
"id":1,
"name":"Furniture & Fixture",
"choices":[
{
"req_goods":"table",
"qty":"4"
}]
},
{
"id":2,
"name":"Miscellaneous Property",
"choices":[
{
"req_goods":"others",
"qty":"6"
}]
}];
$scope.addNewChoice = function(id){
$scope.categories.choices[id].push({});
};
我想在用户点击添加按钮时动态添加选项。我尝试了上面的addNewChoice()
函数,但它给出了错误angular.min.js:114 TypeError: Cannot read property '0' of undefined"
请帮助我非常紧张,因为我从昨天开始尝试这个。谢谢
答案 0 :(得分:2)
将其更改为
$scope.categories[id].choices
它会纠正您的错误
答案 1 :(得分:1)
正如@Ranjith J所说,您必须将代码更改为
$scope.categories[id].choices.push({})
当您将$index
作为ng-click="addNewChoice($index)"
中的参数传递时,您指的是类别索引。因此,使用id
参数访问正确的类别是有意义的。
有关工作示例,请参阅this JSFiddle。