【发布时间】:2018-05-14 09:59:41
【问题描述】:
使用 AngularJS,我想创建一个带有单选按钮的选项列表,其中最后一个有一个标有“其他”的空文本字段,用于输入不在列表中的选项。这是我bootstrapped in CodePen的想法的演示。由于 Stack Overflow 坚持在此消息中包含 CodePen 代码,因此这里是:
js:
angular.module('choices', [])
.controller("MainCtrl", ['$scope', function($scope) {
$scope.color = '';
$scope.colors = [
"Red",
"Green",
"Blue",
"Other"
];
$scope.changeColor = function(){
$scope.color = "Red"
};
}]);
html:
<html>
<head>
<body ng-app="choices" ng-controller="MainCtrl">
<div ng-repeat="color in colors">
<input type="radio" ng-model="$parent.color" ng-value="color" id="{{color}}" name="color">
<label>
{{color}}
</label>
<input type="text" ng-model="$parent.color" ng-show="color=='Other'">
</div>
<p></p>
The chosen color is <strong>{{color}}</strong>
<p></p>
<button ng-click="changeColor()">Change color</button>
</body>
</html>
这是我希望这个演示应用程序执行的操作:
- 当我选择除
Other之外的任何选项时,文本字段应保持空白; - 如果我将光标放在文本字段中,则应选择选项
Other - 一旦我开始在文本字段中输入,
Other选项应保持选中状态 - 如果我更改注册选项的模型(在通过单击
Change color按钮实现的演示应用程序中),则应选择相应的单选按钮。
我通过使用三个模型(一个用于颜色,一个用于跟踪单选按钮,一个用于Other 字段)和三个观察者实现了大部分功能,但是resultant app 似乎很脆弱,并且在某些方面失败了测试。您能否建议一种更好的方法来使用尽可能少的模型和观察者在 Angular 中创建这样的选择器?
(我的问题有点类似于this SO question,但我希望不同之处足以不被视为重复。)
【问题讨论】:
标签: angularjs