我有一个下拉列表。在那里有一些价值观。如果该值不存在,则用户可以在该下拉列表中选择其他选项。如果选择其他,则必须显示文本框。我做到了。
我的要求如下:
如果选择了下拉列表中的选项,我想在特定变量(例如$ scope.myvalue)中将此选定值访问到控制器中。如果选择了Other选项,那么我想在同一个变量中访问文本框中的值到控制器,即在$ scope.myvalue中。
在index.html中,我有以下代码: -
{
<select data-ng-model="selectedName" ng-options="x for x in colors" >
</select>
<input type="text" ng-show="selectedName=='Other'" >
}
在我的控制器中,我有以下代码
app.controller('myCtrl', ['$scope', function($scope) {
$scope.colors = ["Black","Red","Orange","Other"];
}]);
在选择列表中,我只有黑色,红色和橙色三种颜色。如果用户想要选择其他颜色,则他将从选择列表中选择“其他”选项。当选择其他选项时,会出现一个文本框,可以输入颜色。
现在,如果用户从选择列表中选择了颜色,例如红色,则应该可以在某个x变量的控制器中访问它。如果用户从选择列表中选择了其他选项,则会出现一个文本框,并且他会输入一些颜色,例如用户输入了蓝色,然后也可以在控制器在同一个变量x中。 即,无论用户从选择列表中选择了什么值,或者用户已进入文本框,我必须将该值取在控制器中的同一变量中。
答案 0 :(得分:1)
至于我的遗忘和你的问题,你有这样的事情:
HTML:
<div ng-controller="myController">
<!-- Some code here -->
<select ng-model="myValue">
<option value="-1">Other</option>
<option value="100">something</option>
</select>
<!-- Some code here -->
<input type='text' ng-model="myText"/>
</div>
然后在你的controller.js中:
myModule.controller('MyController', function($scope){
$scope.$watch('myValue', function(newValue, oldValue)
{
if (newValue == -1)
{
$scope.myText = "Other Text";
}
else
$scope.myText = "Something else";
});
});
&#39;&#39;&#39;这里是使用$ scope。$ watch,它用于检查控制器范围内的变量是否已经改变。
以下是文档https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$ watch