我有一个场景,我想根据包含配置选项的对象输出一些选择输入,例如占位符文本,用于选择的选项等等。
我已经有了这个工作,但是我需要捕获在一个公共对象中做出的每个选择,我可以用它来构建一个查询字符串 - 它们被用于后续后端调用的一些过滤器选项。 / p>
我认为ng-model将是我的朋友,但我不确定它会不会,除非我有办法动态地在对象上设置一些命名属性。
这是我的md-select标记,可以找到工作的代码集here
<md-select flex ng-model="filterBy.test" ng-repeat="filter in availableFilters" placeholder="{{filter.placeholder}}">
<md-option ng-repeat="option in filter.data" value="{{option.value}}">
{{option.description}}
</md-option>
</md-select>
我最喜欢的是以输入选项填充对象,如下所示:
filterBy = {
TimePeriodFilter: 'last24',
OtherFilter: 2
}
我知道到目前为止我所做的事情是行不通的,因为我试图使用相同的命名ng-model属性,所以它只会在每个选择上被覆盖。此外,我没有过滤器名称,例如TimePeriodFilter&#39;可从选定的选项中获得。
任何人都能提供一些关于如何使其发挥作用的灵感吗?
答案 0 :(得分:1)
将选择更改为:
<md-select flex ng-model="filterBy[filter.name]" ng-repeat="filter in availableFilters" placeholder="{{filter.placeholder}}">
<md-option ng-repeat="option in filter.data" value="{{option.value}}">
{{option.description}}
</md-option>
</md-select>
参见ng-model。
答案 1 :(得分:1)
将过滤器模型初始化为控制器中的对象。
$scope.filterBy = {};
现在,您可以从视图中分配$scope.filterBy
内的每个属性,例如
<md-select flex ng-model="filterBy[filter.placeholder]" ng-repeat="filter in availableFilters" placeholder="{{filter.placeholder}}">
</md-select>
如果过滤器中有任何具有过滤器名称的属性,则可以使用该属性。
答案 2 :(得分:0)
在这里回答类似的事情: Show a list of items inside an ng-repeat when an input is selected with model
https://plnkr.co/edit/OJm07aLJQTCVgWSGgnZt?p=preview
<div ng-repeat="subj in subjects track by $index">
<label>Prerequisites for {{subj.subjectCode}}</label>
<input type="text" ng-model="multiPre[$index]" ng-click="test($index)">
</div>
<select ng-model="multiPre[selected]" multiple>
<option ng-repeat="sb in subjects[selected].prerequisites">{{sb}}</option>
</select>