有没有办法在角度中使用$ index作为ng-repeat中的模型?

时间:2015-03-19 20:52:53

标签: javascript angularjs

我有一个工厂,我正在从控制器我的控制器推送值。

.factory("Inputs", function(){

    var inputs = {

    };

    inputs.editors = [0];

    return inputs;

})

当我像这样循环时,我想使用 $ index 作为模型

<div class="texteditors">
    <div class="form-group" ng-repeat="editor in app.inputs.editors">
        <textarea class="form-control" name="{{$index}}" ng-model="inputs.editors[{{$index}}]" id="" cols="30" rows="10"></textarea>
     </div>
</div>

但它不会评估,我能够让它评估的唯一方法是这样的:

但现在它的字符串是 inputs.editors ['0']

我想循环遍历ng-models并将它们{{inputs.editors [0]}}评估为添加了多少文本区域。我不确定我是否正确解释。

我应该使用指令来创建绑定,我如何能够评估将值推送到工厂时生成的textareas和模型?

3 个答案:

答案 0 :(得分:1)

在处理字符串时,只需要大括号。正如@DimaGimburg所说,在你的ngModel中摆脱它们。

<div class="texteditors">
    <div class="form-group" ng-repeat="editor in app.inputs.editors">
        <textarea class="form-control" name="{{$index}}" ng-model="inputs.editors[$index]" id="" cols="30" rows="10"></textarea>
     </div>
</div>

答案 1 :(得分:1)

你走了:

http://codepen.io/jlowcs/pen/ogJBVm

你的标记有些问题。

您还需要将track by添加到ng-repeat,否则每次模型更改时都会失去焦点,因为ng-repeat会重新创建textarea。

HTML:

<div class="texteditors" ng-controller="MyCtrl as app">
    <div class="form-group" ng-repeat="editor in app.inputs.editors track by $index">
        <textarea class="form-control" ng-model="app.inputs.editors[$index]" id="" cols="30" rows="10"></textarea>
    </div>
    <div class="form-group" ng-repeat="editor in app.inputs.editors track by $index">
        <div>{{app.inputs.editors[$index]}}</vid>
    </div>
</div>

JS:

app.controller('MyCtrl', function($scope, Inputs) {
    this.inputs = Inputs;
})
.factory("Inputs", function(){
    var inputs = {};

    inputs.editors = ['foo', 'bar'];

    return inputs;

})

答案 2 :(得分:0)

ng-model需要一个角度表达式。这意味着您不需要{{}}表示法。

<textarea class="form-control" name="{{$index}}" ng-model="inputs.editors[$index]" id="" cols="30" rows="10"></textarea>

另一方面,name不期望有角度表达。这就是为什么你需要{{}}那里。