我是AngularJS的初学者。我有一个应用程序,它进行API调用,以获得汽车品牌,型号和年份的嵌套列表。我已经创建了三个ui-select元素来显示调用的结果,从汽车品牌列表开始,然后过滤到该品牌中的模型,最后是该模型的年份。我希望第二个和第三个选择在空时禁用,这样用户就无法尝试开始输入汽车模型。
<form class="form-horizontal" ng-controller="instant_quote" ng-submit="loadQuote()" name="quoteform">
<div class="form-group" id="Make">
<label for="Makes" class="col-md-3 control-label">Make</label>
<div class="col-md-9">
<ui-select
id="Makes"
ng-model="request.make">
<ui-select-match placeholder="Enter a Make…">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="choice in makes | filter: $select.search">
<div ng-bind-html="choice.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
</div>
</div>
<div class="form-group" id="Model">
<label class="col-md-3 control-label">Model</label>
<div class="col-md-9">
<ui-select
id="Models"
ng-model="request.model"
ng-disabled="request.make == 'false'">
<ui-select-match placeholder="Enter a Model…">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="choice in request.make.models | filter: $select.search">
<div ng-bind-html="choice.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
</div>
</div>
根据Angular ui-select placeholder not working when ng-model is initalized
,我正在尝试确定每个选择是否为空我的所有输入都没有被禁用。
答案 0 :(得分:7)
我通常在myArray.length上使用ng-disable来获得0或!0并将其用作false和true。一直为我工作。
<select ng-model="model.a"
ng-options="value for a in array"
ng-disabled="!array.length">
</select>
在你的例子中如何:
<ui-select
id="Models"
ng-model="request.model"
ng-disabled="!request.make.length">
<ui-select-match placeholder="Enter a Model…">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="choice in request.make.models | filter: $select.search">
<div ng-bind-html="choice.name | highlight: $select.search"></div>
</ui-select-choices>
在你当前的代码request.make中会返回[]而不是'false'......如果我理解得很好。
答案 1 :(得分:1)
如果您使用自定义过滤器,更好的解决方案是使用ui-select&#39;项目&#39;字段。
<ui-select ng-model="myCtrl.selectedItem" ng-disabled="!$select.search.length && !$select.items.length"
theme="selectize">
<ui-select-match placeholder="{{$select.disabled ? 'No items available' :'Start typing a name'}}"></ui-select-match>
<ui-select-choices repeat="myitem in myFilteredItems = ( myCtrl.myItems| filter:{ someMyItemField:$select.search} | filter:myCtrl.filterItemsFunc)">
{{myItem}}
</ui-select-choices>
</ui-select>
答案 2 :(得分:0)
根据我的理解,您想要使用以下表达式禁用选择:
ng-disabled="request.make == 'false'"
。
尝试这样的事情:
ng-disabled="request.make == undefined"
或者ng-disabled="!('make' in request)"
。
这样,您可以检查是否存在make,如果不存在则禁用选择