如果在AngularJS中选择了下拉列表中的某个值,如何将数据从文本框发送到控制器?

时间:2017-12-01 13:31:37

标签: angularjs angularjs-directive angularjs-scope

我有一个下拉列表。在那里有一些价值观。如果该值不存在,则用户可以在该下拉列表中选择其他选项。如果选择其他,则必须显示文本框。我做到了。

我的要求如下:

如果选择了下拉列表中的选项,我想在特定变量(例如$ 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中。 即,无论用户从选择列表中选择了什么值,或者用户已进入文本框,我必须将该值取在控制器中的同一变量中。

1 个答案:

答案 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