AngularJS错误?

时间:2014-04-01 11:41:47

标签: angularjs google-chrome firefox

我正在使用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中,样式不适用于输入元素(引导输入样式和角度无效类样式)。我拍了一些截图。

谷歌浏览器:googleChromeScreen

Firefox:firefoxScreen

有没有其他人有这些问题?或者也许我做错了什么。

4 个答案:

答案 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的视频。

Google Chrome exampleFirefox example

答案 3 :(得分:0)

我在其他帖子中提到了这个问题,但基本上和其他人一样,你可以: 1)添加一个空选项 2)强制选择列表成员。

Bellow我也有两个解决方案和jsfiddle的问题。 Select options through ng-click is not working in chrome browser using AngularJS

对我来说,这个错误是Chrome上的一个错误,而不是角度错误,因为在Firefox中工作(当它失去焦点时会更新模型)。

:)