我是AngularJs的新手。 我的问题是:我有一个下拉框和一个文本框。我从下拉框中选择了一些值并ng-change
点火,当有人开始在文本框中输入时,下拉框也会变为默认值。重置下拉菜单后,如果我再次在我之前选择的下拉列表中选择相同的值,则ng-change
不会被解雇。
我也使用了ng-click
,但它并不适用于所有浏览器。我遇到了这个问题。
有没有办法让ng-change
使用与前一个或某个替代方案相同的值?
我的代码段:
<code>
<input class="form-control" type="text" id="city1" onblur="codeAddress();" name="city1" ng-model="city1" required>
<select class="form-control" id="brandC" name="brandC" ng-model="vehicle.companyId" ng-change="selectServiceCenter();" required>
<option ng-selected="loginbrandId1==null" value='' >Select Your Car</option>
<option ng-selected="loginbrandId1 == vehicle.companyId" ng-repeat="vehicle in vehiclenames" value='{{vehicle.companyId}},{{vehicle.vehicleID}}' >{{vehicle.companyName}}--{{vehicle.vehicleNumber}}</option>
</select>
<script>
$scope.watchHitCountcity = 0;
$scope.$watch('city1', function (newValue, oldValue) {
if(newValue!=undefined)
{
document.getElementById("brandC").value= "";
}
$scope.watchHitCountcity++;
},true);
$scope.selectServiceCenter = function() {
alert("execute");
}
</script>
</code>
答案 0 :(得分:0)
不要使用 document.getElementById(&#34; brandC&#34;)。value =&#34;&#34;; 使用 ng-model 喜欢:
$scope.$watch('city1', function (newValue, oldValue) {
if(newValue!=undefined)
{
vehicle.companyId = "";
}
$scope.watchHitCountcity++;
},true);
答案 1 :(得分:0)
问题背后的原因
您的案例中发生的事情是您刚刚使用原生java脚本document.getElementById("brandC").value= "";
从下拉列表中删除了值,但这并未改变该元素的ng-model值,即ng-model="vehicle.companyId"
。因为下拉列表的ng模型没有改变,ng-change="selectServiceCenter();"
函数没有被触发,因为角度仍然是ng-model相同。
<强>解决方案强>
因此,按照@Sandeep
的建议更改以下代码$scope.vehicle ={}; //create vehicle object in scope..
$scope.$watch('city1', function (newValue, oldValue) {
if(newValue!=undefined && newValue!=oldValue){
$scope.vehicle.companyId = null;
}
$scope.watchHitCountcity++;
},true);