2016-08-18 54 views
2

我有这样

<ul> 
     <li><input type="text" name="option1" ng-model="option1" /></li> 
     <li><input type="text" name="option2" ng-model="option2" /></li> 
    </ul> 

文本字段列表,我想找到的所有选项*的是在$范围 预先感谢您的回答

+0

我想获得列表的选项值的数组 – provola

+0

请详细说明 –

+0

那么,为什么不绑定到数组呢?如'ng-model =“选项[0]”'? –

回答

1

我会做一个数组,它将保存输入数据,然后添加一个循环在html中迭代该数组。您将不需要搜索特定对象的范围,您将准备好阵列。

$scope.allOptions = [ 
    {name: 'option1', text: ''}, 
    {name: 'option2', text: ''} 
]; 

然后:

<ul> 
    <li ng-repeat="option in allOptions"><input type="text" name="{{option.name}}" ng-model="option.text" /></li> 
</ul> 

的问题是,我不知道在列表中的文本字段数。该应用程序默认有两个列表,但也有一个允许用户以编程方式添加新选项的按钮。因此,在jQuery中,我在每个文本字段中添加ng模型中的累进数字。第一个ng-model = option1,第二个选项2,...

我推荐使用angular然后(添加另一个输入)。

$scope.addInput = function(){ 
    var n = $scope.allOptions.length; 
    $scope.allOptions.push({name: 'option'+(n+1), text: ''}); 
}; 

<button ng-click="addInput()">Awesomeness is here</button> 
+0

明确的问题 - >明确的解决方案,我不明白你的观点...无需添加任何文字 – Damiano

+0

我同意@cale_b也需要解释。不仅代码 –

+1

当然。明确的问题。清楚的解决方案**给你**。 OP和未来的访问者,可能不知道'ng-repeat',它是如何工作的,在哪里可以找到文档等等。 –

-1

有几种方法可以做到这一点。

See this working jsFiddle

第一种方法,我向您展示将是自然的下一步你做的方式,并允许您为您请求访问的值。

首先,结合您的输入阵列,像这样:

<ul> 
    <li><input type="text" name="option[1]" ng-model="option[0]" /></li> 
    <li><input type="text" name="option[2]" ng-model="option[1]" /></li> 
    <li><input type="text" name="option[3]" ng-model="option[2]" /></li> 
</ul> 

不要忘记来声明变量为控制器的数组:

$scope.option = []; 

然后,在控制器,您可以通过$scope.option访问它们。可以使用ng-repeat,这是非常强大的。 ng-repeat documentation

要使用ng-repeat

首先,设置对象在你的控制器的阵列,像这样:

$scope.rOptions = [ 
    {name: 'option1', val: ''}, 
    {name: 'option2', val: ''}, 
    {name: 'monkey', val: ''} 
]; 

然后,您可以输出与一组简化的标记的HTML:

<ul> 
    <li ng-repeat="rOption in rOptions"><input name="{{rOption.name}}" ng-model="rOption.val"></li> 
</ul> 

而且,在您的控制器中,您可以通过$scope.rOption访问这些值。

你可以看看上面的提琴,看看这两个工作,以及如何访问数据。

相关问题