使用AngularJS生成新字段

时间:2016-07-19 13:36:52

标签: javascript arrays angularjs

当项目被推入数组时,我尝试生成新表单。 表单始终相同,只是将条件计数增加一个。

这样的事情:

<span ng-show="companydata.selectedloc.length == 0">
    <div angucomplete-alt id="ex1"
    selected-object="selectedLocation"
    ></div>
</span>

<span ng-show="companydata.selectedloc.length == 1">
    <div angucomplete-alt id="ex1"
    selected-object="selectedLocation"
    ></div>
</span>

<span ng-show="companydata.selectedloc.length == 2">
    <div angucomplete-alt id="ex1"
    selected-object="selectedLocation"
    ></div>
</span>

每个代码块都会在select上将项目推送到 companydata.selectedloc (它是自动完成选择输入)。

这是JS的功能:

$scope.selectedLocation = function(selected){
    $scope.companydata.selectedloc.push(selected)
}

总是使用相同的代码块,是否有一些方法比手动增加条件并根据需要添加尽可能多的代码块(最多10个)更优雅?

1 个答案:

答案 0 :(得分:1)

您应该利用Angular的内置ng-repeat directive

这是一个有效的Fiddle

请注意,在小提琴中,我添加了track by $index,因为我不知道您的selected值是多少。请注意,$ index跟踪有权衡,但有时需要防止Angular抛出欺骗错误。

从小提琴中,我宣布companydata变量如此:

$scope.companydata = {
  selectedloc: [] // Initialized with an empty array
}

如果您希望预先填充它,那很简单:

$scope.companydata = {
  selectedloc: [0, 1, 2] // Initialized with valu(es) as needed
}

有关更详细的示例,请参阅此updated Fiddle,我已使用模拟&#34; location&#34;更新了该示例。对象。

<span ng-repeat="loc in companydata.selectedloc">
    <div angucomplete-alt id="ex1"
    selected-object="selectedLocation"
    ></div>
</span>