我正在使用AngularJS v1.2.15,Google Chrome版本33.0.1750.152,Firefox版本26.0开发Web应用程序。
我发现的问题:
1.当我通过键盘,模型更新在选择标签中选择ng-options时,但是对于ng-model,前两次点击会先写入第一个值。使用鼠标工作正常。 Google Chrome中发现此问题。在Firefox中一切都很好。示例:plunker
<div class="controls">
<select id="model" ng-model="safe.model.id"
ng-options="model.id as model.name for model in models" required>
</select>
</div>
2.在Google Chrome中,样式不适用于输入元素(引导输入样式和角度无效类样式)。我拍了一些截图。
谷歌浏览器:
Firefox:
有没有其他人有这些问题?或者也许我做错了什么。
答案 0 :(得分:3)
对于问题#1,我认为这是一个错误。这里有报道:https://github.com/angular/angular.js/issues/4836
似乎有另一种选择 - 如果您指定一个带空值的选项,那么它会修复它。
因此,您只需添加<option value="">Select one</option>
即可。
这是一个经过修改的plunkr,可以显示它。
你能发布第二期的代码,以便我们弄清楚它有什么问题吗?只是图像没有帮助。
答案 1 :(得分:2)
据我所知 - ng-options没有任何(键盘)问题或者角度为select
的元素可能意味着它没有按照您的预期行事去做。我根据你提供的代码松散地创建了一个小提琴。以下是我的控制器:
app.controller('Test', function ($scope) {
$scope.models = [{id: 0, name: 'abc'}, {id: 1, name: 'def'}, {id: 2, name: 'ghi'}, {id: 3, name: 'jkl'}];
// safe has to be defined
$scope.safe = {model: $scope.models[2]};
});
对于select
元素,我从你的内容开始,但稍微简化了一下:
<select id="model" ng-model="safe.model"
ng-options="model.name for model in models"
required=""></select>
如果你看一下plunker,it is working here。请注意,我在Chrome版本33.0.1750.154 m中编写并测试了此内容。我添加了一个焦点按钮,以便您可以测试键盘输入(否则很难专注于选择)。
至于样式 - 默认情况下,Chrome中的select
框看起来有所不同,但我无法从您的屏幕截图中看出您认为这是什么问题。希望这至少可以帮助您解决部分问题。
答案 2 :(得分:0)
我创建了显示问题№1的视频。
答案 3 :(得分:0)
我在其他帖子中提到了这个问题,但基本上和其他人一样,你可以: 1)添加一个空选项 2)强制选择列表成员。
Bellow我也有两个解决方案和jsfiddle的问题。 Select options through ng-click is not working in chrome browser using AngularJS
对我来说,这个错误是Chrome上的一个错误,而不是角度错误,因为在Firefox中工作(当它失去焦点时会更新模型)。
:)