【问题标题】:Angular dynamic model naming?角动态模型命名?
【发布时间】:2015-07-30 13:31:32
【问题描述】:

我正在学习角度,所以请温柔;)

我有一个填充了一些数据的表。我想在每一列上添加过滤(不是角度过滤器,而是数据过滤器)。

我的想法是在标题中每列的顶部添加一个文本框。然后在调用 api 获取数据时,使用这些文本框值在我的服务中创建 Filters 数组。

我目前有:

<tr>
                <th ng-repeat="column in report.Columns" ng-show="column.IsVisible">
                    <span class="sort" ng-click="updateSortOrder($index)" ng-class="{'sort-asc': predicate == $index && !reverse, 'sort-desc':predicate == $index && reverse}">{{ column.DisplayName }}</span>
                    <div class="input-group">
                        <span class="input-group-addon"><i class="fa fa-filter fa-fw"></i></span>
                        <input class="form-control" type="text" placeholder="Search" ng-model="">
                    </div>
                </th>
</tr>

我坚持的是,如何将文本框分配给 ng-model,根据它们所在的列动态命名它们。

我考虑过使用 ng-model="column.ColumnName" - 但不会将文本框绑定到 report.Columns.ColumnName 吗?我不想编辑它,我想在每个范围内创建一个新的 var。

类似于 $scope.Filters.-ColumnName- 的东西。

然后我想遍历 $scope.Filters 上的每个 ColumnName 并在我的服务调用中使用它的过滤器数组中的值。

我希望这是有道理的。如果我走错了路来实现这一目标,请随时为我指明正确的方向,正如我所说,我刚刚开始学习 Angular。

提前致谢

【问题讨论】:

    标签: angularjs dynamic angular-ngmodel


    【解决方案1】:

    这与角度无关,它更像是一个 javascript 问题。

    对于变量属性名称,您使用[] 对象表示法

    <input ng-model="filters[column]"
    

    在控制器中:

    $scope.filters ={}
    

    如果范围对象中尚未创建属性,ng-model 将在有任何用户输入时自动创建它们

    【讨论】:

    • 这似乎工作得很好,谢谢。有什么办法可以打印变量的名称和它的值吗?
    • 当然 ... ng-repeatin 语句的第一部分是数组元素实例,所以 ... {{column}} in view 将打印到视图
    • 这不是打印变量的值吗?我想同时访问值和它的名称。即,打印:“columnName : itsValue”
    • 打印值与答案columns[column]中的相同
    猜你喜欢
    • 2020-06-27
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多