我有一个工厂,我正在从控制器我的控制器推送值。
.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和模型?
答案 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
不期望有角度表达。这就是为什么你需要{{}}
那里。