如何在ng-repeat循环中动态设置模型名称
<div ng-controller="parentController">
<div ng-ccontroller="childController">
<div data-ng-repeat="category in categories">
<label >{{category.name}}</label>
<div class="radio">
<label><input type="radio" name=? value="1" ng-model=?> value 1</label>
<label><input type="radio" name=? value="2" ng-model="?"> value 1</label>
</div>
</div>
</div>
</div>
在上面我必须动态设置名称和ng-model值,只要发生循环,就像父控制器的 $ parent.cat0,$ parent.cat1,$ parent.cat2 一样。
我尝试了以下内容:
ng-model = '$parent.cat'+{{$index}}
or
ng-model = "'$parent.cat1'+{{$index}}"
or
ng-model = "$parent.cat"+{{$index}}
我尝试了以上的事情没有成功。是否有任何其他方法可以在角度js中动态设置模型名称。
我期待像这样的东西(在普通的HTML中给出)
<label>category1</label>
<input type="radio" name ="cat1" value=0>value0</input>
<input type="radio" name ="cat1" value=1>value1</input>
<label>category2</label>
<input type="radio" name ="cat2" value=0>value0</input>
<input type="radio" name ="cat2" value=1>value1</input>
答案 0 :(得分:1)
在你的情况下应该是这样的:
ng-model = "$parent.cat[$index]"
答案 1 :(得分:0)
除非使用指令,否则我认为你不能这样做。
但你可以这样:
$sql = "insert into `od_request` (`username`, `amount`, `status`, `date`) values ('$login_session', '$amount', 'Request', NOW())";
$ index由ng-repeat提供。 为了确保没有任何问题,您需要在parentController中正确初始化您的模型:
ng-model = "cat[$index]";
并非我不使用$ parent,因为如果你在parentController中正确初始化$ scope,则没有必要。
答案 2 :(得分:0)
ng-model指令接受表达式。这意味着您不必包括花括号。
这意味着你可以ng-model="$parent['cat' + $index]"
。
如果你有一个数组,那就是ng-model="$parent.cat[$index]"
答案 3 :(得分:0)
ng-repeat创建自己的范围,因此从ng-repeat $parent
内部将引用childController,因此您需要执行$parent.$parent
来访问parentController。你也可以使用&#39;控制器作为&#39;语法为您的范围命名,例如:
<div ng-controller="parentController as parentCtrl">
<div ng-controller="childController as childCtrl">
<div data-ng-repeat="category in categories">
<label >{{category.name}}</label>
<div class="radio">
<label><input type="radio" name="{{parentCtrl['cat'+$index]}}" value="1" ng-model=""> value 1</label>
<label><input type="radio" name="" value="2" ng-model="?"> value 1</label>
</div>
</div>
</div>
</div>