Javascript 有没有一种方法可以使用angular中的$index作为ng重复中的模型?
我有一个工厂,我正在将值从我的控制器推送到我的控制器Javascript 有没有一种方法可以使用angular中的$index作为ng重复中的模型?,javascript,angularjs,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.i
.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模型,并对它们{{inputs.editors[0]}进行评估,以确定添加了多少文本区域。我不确定我解释得是否恰当
如果我使用指令创建绑定,我将如何评估将值推送到工厂生成的文本区域和模型?处理字符串时,您只需要花括号。正如@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>
ng模型
需要一个角度表达式。这意味着您不需要{{}
符号
<textarea class="form-control" name="{{$index}}" ng-model="inputs.editors[$index]" id="" cols="30" rows="10"></textarea>
另一方面,name
不需要角度表达式。这就是为什么您需要那里的{{}
。给您:
您的标记有几处错误
您还需要在ng repeat
中添加track by
,否则每次模型更改时都会失去焦点,因为文本区域是由ng repeat
重新创建的
HTML:
您是否尝试过这样使用ng模型:ng model=“inputs.editors[$index]”?(没有花括号)谢谢这正是我需要的我真的很感谢你花时间回答!是的,我遇到的问题是它不会计算,我知道ng模型是和angular指令,name是一个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>
app.controller('MyCtrl', function($scope, Inputs) {
this.inputs = Inputs;
})
.factory("Inputs", function(){
var inputs = {};
inputs.editors = ['foo', 'bar'];
return inputs;
})