AngularJS - 无法使用指令在 ng-model 中引用 $index
AngularJS - cannot reference $index inside ng-model using a directive
我目前面临一个问题,我想生成动态数量的输入表单并动态命名它们(由 JSON 定义)以便我可以单独引用它们。
例如,如果我的 JSON 对象中有三个项目,我将生成三个输入框,分别为 ng-model="1"
、ng-model="2"
和 ng-model="3"
。在现实生活中,ID 将来自 JSON 本身。
我目前正在使用 ng-repeat
在 table;
中生成表格
<tr ng-repeat="x in names track by $index">
<td>{{ $index }}</td> <!-- this outputs fine -->
<td>{{ x.Description }}</td>
<td>{{ x.Metric }}</td>
</tr>
并使用指令和 $compile
函数动态生成具有唯一 ng-model
名称的输入表单。
app.directive("outDynamic", function($compile){
return{
link: function(scope, element, attrs){
var template = "<input type='number' ng-model='" + scope.ray[attrs.element1] + "'>";
var linkFn = $compile(template);
var content = linkFn(scope);
element.append(content);
}
} });
然而:none以下作品(嵌套在ng-repeat
时)
<!-- None of these work -->
<td out-dynamic element1=$index></td>
<td out-dynamic element1="$index"></td>
<td> <input type='number' ng-model="array[$index]"> </td>
<td> <input type='number' ng-model="array['$index']"> </td>
问题摘要;
Every time I try and reference the $index
tracker, I get an
undefined error in my directive code.
您应该使用 {{}}
为属性分配 $index
值。所以使用
element1={{$index}}
而不是 element1=$index
<tr ng-repeat="x in names track by $index">
<td out-dynamic element1={{$index}}></td>
<td out-dynamic element1="{{$index}}"></td>
</tr>
我猜你的 scope.arr
很完美。
我目前面临一个问题,我想生成动态数量的输入表单并动态命名它们(由 JSON 定义)以便我可以单独引用它们。
例如,如果我的 JSON 对象中有三个项目,我将生成三个输入框,分别为 ng-model="1"
、ng-model="2"
和 ng-model="3"
。在现实生活中,ID 将来自 JSON 本身。
我目前正在使用 ng-repeat
在 table;
<tr ng-repeat="x in names track by $index">
<td>{{ $index }}</td> <!-- this outputs fine -->
<td>{{ x.Description }}</td>
<td>{{ x.Metric }}</td>
</tr>
并使用指令和 $compile
函数动态生成具有唯一 ng-model
名称的输入表单。
app.directive("outDynamic", function($compile){
return{
link: function(scope, element, attrs){
var template = "<input type='number' ng-model='" + scope.ray[attrs.element1] + "'>";
var linkFn = $compile(template);
var content = linkFn(scope);
element.append(content);
}
} });
然而:none以下作品(嵌套在ng-repeat
时)
<!-- None of these work -->
<td out-dynamic element1=$index></td>
<td out-dynamic element1="$index"></td>
<td> <input type='number' ng-model="array[$index]"> </td>
<td> <input type='number' ng-model="array['$index']"> </td>
问题摘要;
Every time I try and reference the
$index
tracker, I get an undefined error in my directive code.
您应该使用 {{}}
为属性分配 $index
值。所以使用
element1={{$index}}
而不是 element1=$index
<tr ng-repeat="x in names track by $index">
<td out-dynamic element1={{$index}}></td>
<td out-dynamic element1="{{$index}}"></td>
</tr>
我猜你的 scope.arr
很完美。