'un çalışması nedeniyle yenileniyor/varsayılan seçeneğe geri döndü AngularJS'de bir uygulama yapıyorum ve Firefox'u kullanırken belirli açılır menülerle ilgili sorun yaşıyorum.Firefox açılan açılır menü, Javascript - AngularJS
Seç menüsünü tıklatıp seçeneklerin üzerine geldiğimde, imlecim üzerinde gezinip, varsayılan/ilk seçeneğe gitmek için seçili seçeneği sıfırlar. Seçenek sayısı büyük olduğunda, doğru seçeneği seçmek çok zor olur.
Uygulama, ekranı her saniye güncellemek için JavaScript gerektirir ve bunun nedeni bu gibi görünüyor. Bununla birlikte, Chrome veya Safari'de bu sorunla karşılaşmam gibi görünmüyor.
Bunu Firefox için çözmenin bir yolu var mı?
index.html
<!DOCTYPE html>
<html ng-app="myapp">
<head>
<script data-require="[email protected]" 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
O ng-seçenekleri yoluyla yaratma 'seçeneğin' elemanları gibi görünüyorvar 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();
};
}];
Zamanlayıcı, $ digest döngüsünü her saniye tetikleyecek ve her seferinde ng-options ifadesinin yeniden değerlendirilmesine neden olacaktır. Ben ilk koşuda un-bağlanmış açılan-aşağı üretmek ve ardışık $ digest döngüler yoksaymak için jQuery kullanacak kendi yönergesini oluşturmanın yanında bir şey yapamaz sanmıyorum. – Stewie
@Stewie, $ digest döngülerini tetikleyen nedir? Bu işlevdeki '$ kapsamı '? Eğer öyleyse, belki de zamanlayıcı fonksiyonunu bir direktifte koyup eski moda yolunu güncellemesini sağlayın - angular.element (element) .html (sayaç) ... – rGil
Katılıyorum, daha iyi bir fikir gibi geliyor. Bu durumda OP'nin ayrıca $ timeout fonksiyonunda üçüncü parametreyi ('invokeApply') yanlış olarak ayarlaması gerekecektir. – Stewie