2016-05-12 18 views
5

Chrome'daki siparişin diğer tarayıcılarda olduğu gibi sıralamamış olduğunu fark ettim.OrderBy, Chrome'da diğer tarayıcılardan daha farklı şekilde sıralanıyor

Angular 1.3'te bir proje için yazıyorum.

Krom sıralama: Chrome

IE 10 sıralama: enter image description here

Belirli tarayıcıları ilgili hiçbir özel mantık var ve her iki diziler TAM aynıdır.

yüklem açıkça tanımlanır:

$scope.predicate = 'style'; 
$scope.reverse = true; 

Benim ng-repeat şuna benzer:

<tr ng-repeat="line in model.resultList | orderBy:predicate:reverse"> 

benim koduyla özel veya farklı bir şey yok. Bununla birlikte, 'boyutlar', dizelerdir (örneğin, boyut: '8-', ..., boyut: '6', ...). Bu, neden tüm tarayıcılarda olduğundan daha farklı bir şekilde Chrome'da ayrılıyor?

Tüm sonuçlarım, arka uçtan # stili gruplar halinde ve sonra artan boyutlarda sıralanır. Birincil sıralama Açısal olarak ayarlandığında, bu durumda Stil, Chrome zaten sıralanmış boyutlarını karıştırıyor. Yanlış

http://plnkr.co/edit/6TO8pZZ8jZ8Tytw6wHpQ?p=preview

+1

Stil özellikleri nedir? Gösteriyle keman yapabilir misin? Sıralı mülkün ne olduğu belli değil. – Andrey

+0

Çünkü krom "hızlı", bu yüzden sıralamayı umursamıyor, bunun yerine biraz karıştırıyor, böylece kimliğin tamamen sizin görmezden gelmediğini biliyordunuz. –

+0

Bu [örnek] 'de (https://plnkr.co/edit/ptx9SSTbOKCA3kTj58Af?p=preview) –

cevap

4

Hiçbir şey (farkı görmek Chrome ve IE/FireFox açık) altına Plnk bakınız. Diğer alanlara göre sıralama yaptığınız için boyut herhangi bir şekilde karıştırılabilir. orderBy, tarayıcının buit-in sort işlevine dayanır (source). Tarayıcı uygulamaları farklı olabilir. Ve sıralama kararlı olmamalıdır (MDN, ES2015 Standard section).

Tutarlı bir davranış elde etmek istiyorsanız, birden çok alana göre sıralama kullanın. Like

orderBy:[predicate, 'size']:reverse 
+1

Bir ekleme ve açıklamanızdan sonra, 'sort()', aynı tarayıcıda bile beklenmedik sonuçlar üretecektir. –

+1

@Andrey Yardımlarınız için çok teşekkür ederim! – developthewebz