AngularJS在未选择时提前键入
我已经在前面添加了角度引导的类型。它工作得很好,我想给它添加一个功能。因此,当选择一个项目时,我只想在Typeahead中选择某个项目时切换其他组件的禁用状态。问题是,如果我在第一个Typeahead中键入某个内容,而我没有选择任何内容,那么它不会触发任何事件 下面是组件的html。我想问的是,为了实现这个功能,我应该听哪个事件AngularJS在未选择时提前键入,angularjs,Angularjs,我已经在前面添加了角度引导的类型。它工作得很好,我想给它添加一个功能。因此,当选择一个项目时,我只想在Typeahead中选择某个项目时切换其他组件的禁用状态。问题是,如果我在第一个Typeahead中键入某个内容,而我没有选择任何内容,那么它不会触发任何事件 下面是组件的html。我想问的是,为了实现这个功能,我应该听哪个事件 <div class="form-group has-feedback" ng-controller="CitiesSearchController">
<div class="form-group has-feedback" ng-controller="CitiesSearchController">
<input type="text" id="cityCombo" ng-model="selectedCityName" placeholder="City"
data-typeahead="cities.CityName for cities in getCities($viewValue)"
data-typeahead-loading="loadingCities"
data-typeahead-min-length="1"
data-typeahead-wait-ms="0"
data-typeahead-on-select="onCitySelect($item, $model, $label)"
class="form-control" />
<span ng-show="loadingCities" class="glyphicon glyphicon-refresh form-control-feedback"></span>
</div>
我想的是:我可以触发一个改变了的事件。因此,每当文本被更改时,它就会激发并触发事件,并在此基础上禁用其他组件。这是正确的方法吗?您可以通过在
selectedCityName
上调用$watch
订阅ng型号值的更改:
此处的工作插销:
这里需要注意的一件非常重要的事情是,在我的示例中,我设置了typeahead editable=“false”
,以防止无效选择,并将它们限制在原始数组中的选择。因此,除非做出有效选择,否则$watch事件将不会触发。当然,您可以将其更改为true
,但这将允许在ng模型中输入任何我认为无效的虚拟输入
我希望这有帮助。你能再解释一下吗?当用户不从列表中选择时,您希望发生什么?每当编辑文本时(即未进行选择时),我希望禁用其他组件。所以这里我选择了城市,所以除非选择了一个城市,否则我希望区域框被禁用。当然,只有在选择了一个城市的情况下,才能进行填充。请参阅我对上面John C.的评论。为什么不换一种方式呢?禁用控件并仅在有效选择时启用它们?@Diananasar如果用户做出有效选择,然后决定继续键入,则将启用控件。听起来好像huber.duber希望在用户键入时禁用所有内容。@JoshC。没错,但他不能点击任何东西。如果他输入了无效值,他们将立即被禁用;因此,即使它们确实被启用,它们也会立即被启用,并且不会产生任何效果,因为用户将无法单击/输入任何内容。如果我将上述语句切换为:$scope.isDisabled=value,您的解决方案对我的场景有效?假:真;
$scope.$watch("selectedCityName", function(value) {
$scope.isDisabled = value ? true : false;
});