使用AngularJS我有一个选定的选项列表和一个额外的" New"选项。我想做的是,当" New"选择选项后,它将显示一个文本框以添加新值。
<select ng-model="group.name" ng-options="bl.Name for bl in Groups" >
<option value="VALUE FROM TEXT BOX">New</option>
</select>
<div class="col-md-4" ng-show="WHEN NEW OPTION IS Chosen ">
<input class="text-box" type="text" name="NewValue" ng-model="group.name" />
</div>
答案 0 :(得分:4)
您可以尝试这样
<div ng-app='myApp' ng-controller="ArrayController">
<select ng-model="group.name" ng-options="Group.Name for Group in Groups"></select>
<div class="col-md-4" ng-show="group.name.Value == 'new'">
<input class="text-box" type="text" name="NewValue" ng-model="newValue" />
<button ng-click="add(newValue)">Add</button>
</div>
</div>
答案 1 :(得分:0)
只需观察所选的项目更改:
$scope.displayDiv = false;
$scope.newval = 'newval';
$scope.$watch('group.name', function(newval, oldval) {
if (newval == $scope.newval) {
$scope.displayDiv = true;
}
}
和HTML:
<div class="col-md-4" ng-show="displayDiv">
答案 2 :(得分:0)
此处a working example。 首先,我们设置选项和输入。
<select ng-model="curopt"
ng-options="option.name for option in options">
</select>
<input type="text" ng-model="newopt"
ng-show="curopt.name == 'New'"
ng-keypress="newOption($event)">
我们输入的ng-show选项与当前所选选项的名称相关联。我们还添加了一个ng-keypress指令,允许我们处理被按下的回车键。
现在到控制器......
$scope.newOption = function(event) {
if (event.which == 13) {
$scope.options.push({ name : $scope.newopt, value : $scope.newopt });
$scope.newopt = '';
}
}
因为我们的选择输入选项与$scope.options
相关联,所以我们可以简单地将文本输入值附加到数组中,而角度将处理由于数据绑定而导致的更新。