javascript - 如何动态地将索引分配给 ng-show Angular 值

标签 javascript angularjs

为什么这不起作用?

<div ng-repeat="report in reports track by $index">
    <div ng-model="myDiv{{ $index }}" ng-show="myDiv{{ $index }}">{{ report }} {{ index }}</div>
</div>

像这样吗?

<div ng-repeat="report in reports track by $index">
    <div id="myDiv{{ $index }}"  name="myDiv{{ $index }}">{{ report }} {{ index }}</div>
</div>

虽然您可以将 $index 添加到任何名称或 id(呈现为 id="myDiv1"),但它对于其他指令的行为并不相同(将呈现为 ng-model ="myDiv{{ $index }}")。

我的目标是创建一个表格,用户可以在其中查看、排序和下载某个日期范围内的 6-10 个不同的报告。客户端需要在页面上同时显示可排序的报告列表,每个报告都有自己的日期范围选择器。由于报告选择因用户而异,因此这需要动态完成。以下基本上是我想做的......

<tr ng-repeat="report in reports track by $index">
    <td><p>{{ report.title }}</p></td>
    <td>
        <div id="dateRangePicker{{ $index }}">
            <div id="fromDateWrapper{{ $index }}" class="col-md-6">
                <p class="input-group">
                    <input id="fromDateInput{{ $index }}" type="text" ng-blur="validDate($event,$index)" is-open="openFrom{{ $index }}" ng-model="fromDate{{ $index }}" class="form-control calenderInput" datepicker-popup="MM/dd/yyyy" min-date="minDate" max-date="toDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close"/>
                    <span id="fromDateButton{{ $index }}" class="input-group-btn">
                        <button type="button" class="btn btn-default " ng-click="openCalender($event,'fromDate',$index)"><i class="glyphicon glyphicon-calendar"></i></button>
                    </span>
                </p>
            </div>      
            <div id="toDateWrapper{{ $index }}" class="col-md-6">
                <p class="input-group"> 
                   <input id="toDateInput{{ $index }}" type="text" ng-blur="validDate($event,$index)" is-open="openTo{{ $index }}" ng-model="toDate{{ $index }}" class="form-control calenderInput" datepicker-popup="MM/dd/yyyy" min-date="fromDate{{ $index }}" max-date="maxDate" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close"/>
                    <span id="toDateButton{{ $index }}" class="input-group-btn">
                        <button type="button" class="btn btn-default" ng-click="openCalender($event,'toDate',$index)"><i class="glyphicon glyphicon-calendar"></i></button>
                    </span>
                </p>
            </div>
        </div>
    </td>
   <td><button id="printReport{{ $index }}" type="button" ng-click="printReport($index)">Print Report</button></td>
</tr>

当硬编码时,一切正常。如果在指令中没有 $index 的情况下呈现,每个日历都会影响其他日历,因为它们都依赖于相同的变量,这些变量使它们显示、隐藏、重置等。

希望我只是以错误的方式或解决方法这样做,或者很快需要另一个解决方案。

最佳答案

您想要做的事情是不可能的,对于初学者来说,您正在设置 ng-model<div></div>上当模型指令只能用于表单元素(例如输入)时。您还使用 {{}}指令表达式内的方括号将不起作用。

为什么不将索引对存储在对象中并执行以下操作:

$scope.myDiv = {};

<div ng-repeat="report in reports track by $index">
    <input type="text" ng-model="myDiv[index]" ng-show="myDiv[index]" />
</div>

关于javascript - 如何动态地将索引分配给 ng-show Angular 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27926010/

相关文章:

javascript - 如何在 moment.js 中比较不同时区的日期

javascript - 从 iframe 更改文本区域值

angularjs - 从 Controller 关闭 Angular 引导模式窗口

javascript - 在 if 语句之后执行 Promise,如finally

javascript - 您可以在 Chart.js 中为不同的轴设置单独的颜色吗?

javascript - 我可以将 Date.toString() 的输出传递给 Date 构造函数吗?

javascript - 为什么 .append() 在排序时会替换表格行?

html - Chart.js 图表在 ngIf 中时不显示。

javascript - 在 Angular js 应用程序中实现甘特图的最有效方法是什么?

javascript - 如何取消选中的单选按钮