Chr*_*s X 16 angularjs angularjs-ng-repeat
select从option元素传递对象时,我对元素上的ng-model有问题.所以,假设我们有一个表中的列数组columns(表的定义),我们想在这个定义上创建一些过滤器
var columns = [
{name: 'Account ID', type: 'numeric'},
{name: 'Full name', type: 'text'},
{name: 'Date of birth', type: 'date'},
{name: 'Active', type: 'boolean'}
// and so on
];
var filters = [{}];
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="form-field" ng-repeat="filter in filters">
<select ng-model="filter">
<option value="" disabled>Choose filter</option>
<option ng-repeat="column in columns" ng-value="column">{{column.name}}</option>
</select>
<input type="text" ng-model="filter.value">
</div>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我希望filter得到它的价值column并在其中添加特定数据,所以在某个时刻,我的过滤器可能是这样的:
[
{name: 'Account ID', type: 'numeric', value: 123},
{name: 'Active', type: 'boolean', value: 'Yes'}
]
Run Code Online (Sandbox Code Playgroud)
无论如何,我不确定这是这样做的方式,但我想知道如何在控制器中写入很多js代码来实现这种行为.
我做了一些解决方法来完成这个,使用ng-change传递filter和column.name,找到columns数组中的列,获取type属性,更新filter,但我真的认为有一个更简单的答案.
noj*_*noj 21
您可以使用ng-options将所选对象绑定到模型:
<div class="form-field" ng-repeat="filter in filters">
<select ng-options="column.name for column in columns" ng-model="filter.value">
<option value="" disabled>Choose filter</option>
</select>
<input type="text" ng-model="filter.value.name">
</div>
Run Code Online (Sandbox Code Playgroud)
更新的答案:
<div class="form-field" ng-repeat="filter in filters">
<select ng-options="column.name for column in columns" ng-model="filters[$index]">
<option value="" disabled>Choose filter</option>
</select>
<input type="text" ng-model="filters[$index].name">
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42280 次 |
| 最近记录: |