首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >由于运行Javascript - AngularJS,Firefox select下拉列表将保持刷新/恢复为默认选项

由于运行Javascript - AngularJS,Firefox select下拉列表将保持刷新/恢复为默认选项
EN

Stack Overflow用户
提问于 2013-07-06 07:34:35
回答 3查看 3.3K关注 0票数 17

我正在用AngularJS构建一个应用程序,在使用火狐时遇到了选择下拉菜单的问题。

当我单击选择菜单并将鼠标悬停在选项上时,它会将所选选项从光标悬停在其上的选项重置为默认/第一个选项。当选项的数量很大时,很难选择正确的选项。

这款应用需要JavaScript每秒钟更新一次屏幕,这似乎就是原因所在。

然而,我在Chrome或Safari上似乎没有这个问题。

有没有办法为Firefox解决这个问题?

Demo here

index.html

<!DOCTYPE html>
<html ng-app="myapp">
  <head>
    <script data-require="angular.js@1.0.7" data-semver="1.0.7" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
    <link href="style.css" rel="stylesheet" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="ctrl">
    <div ng-init="updatetimer()">
    <div>seconds: {{counter}}</div>
    <select ng-model="something" ng-options="n.name for n in namelist">
      <option value="">select person</option>    
    </select>
    </div>
  </body>
</html>

script.js

var app = angular.module('myapp', []);

var ctrl = ['$scope', '$timeout', function($scope, $timeout) {

    $scope.counter=0;

    $scope.namelist = [
      {name: "Name1"}, {name: "Name2"}, {name: "Name3"}, {name: "Name4"}, {name: "Name5"},
      {name: "Name6"}, {name: "Name7"}, {name: "Name8"}, {name: "Name9"}, {name: "Name10"},
      {name: "Name11"}, {name: "Name12"}, {name: "Name13"}, {name: "Name14"},
      {name: "Name15"}, {name: "Name16"}, {name: "Name17"}, {name: "Name18"},
      {name: "Name19"}, {name: "Name20"}, {name: "Name21"}, {name: "Name22"},
      {name: "Name23"}, {name: "Name24"}, {name: "Name25"}, {name: "Name26"},
      {name: "Name27"}, {name: "Name28"}, {name: "Name29"}, {name: "Name30"}
   ];

  $scope.updatetimer = function() {

    var updater = function() {
      $scope.counter++;
      $timeout(updater, 1000);
    }
    updater();
  };

}];
EN

回答 3

Stack Overflow用户

发布于 2014-03-25 01:58:19

票数 3
EN

Stack Overflow用户

发布于 2014-07-03 14:55:05

有些人仍然会面临这个问题。

修复方法如下:

 if (existingOption.id !== option.id) {
    lastElement.val(existingOption.id = option.id);
 }
-if (existingOption.element.selected !== option.selected) {
+if (existingOption.selected !== option.selected) {
      lastElement.prop('selected', (existingOption.selected = option.selected));
 }
} else {

将此补丁直接添加到angular核心中。此错误在v1.2.8中仍然存在

票数 2
EN

Stack Overflow用户

发布于 2014-08-13 19:20:48

这是一个AngularJS旧版本的问题,基本上在1.0.7之前,它已经在1.0.7版本中修复了,如果你使用的是1.0.7之前的版本,那么你将会得到同样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17498123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档