agaimana untuk menyingkirkan ini sorting(aneh) seperti yang saya inginkan kunci yang akan digunakan dalam kode.. aku diperiksa grup google tapi ada
iola untuk menggunakan dua array yang menyimpan nilai-nilai kunci.
-3">
/em
edded/result,js,html,css/"> . Don't ingin pergi dengan pendekatan ini.

Solution / Answer

Ini adalah keterbatasan JavaScript tidak Kaku.

Dari ECMAScript Edisi Ketiga:

4.3.3 Suatu objek adalah anggota dari jenis Objek. Ini adalah unordered koleksi dari sifat masing-masing yang berisi primitif nilai, objek, atau fungsi. Fungsi disimpan dalam properti objek adalah yang disebut metode.

Dari ECMAScript Bahasa Spesifikasi

[ ... ] urutan enumerasi sifat [...] tidak ditentukan.

Sudut macam objek tombol secara eksplisit dalam rangka untuk menyediakan setidaknya beberapa jenis perilaku yang membudaya.

Solusi adalah untuk iterate atas diekstraksi kunci:

<div ng-repeat="key in keys(Dates)">
  {{key}} ==> {{Dates[key]}}
</div>
$scope.keys = function(obj){
  return obj? Object.keys(obj) : [];
}

$scope.Dates = {
  "Today":"30",
  "This Week":"42",
  "This Month": "Oct",
  "This Quarter" : "Bad",
  "This Year" : 2013
};

EDIT: I've mengajukan bug, jangan ragu untuk +1

ECMAScript tidak menentukan urutan di mana kunci harus mengulangi, namun semua browser utama melaksanakan benda-benda terkait peta hash (mempertahankan order) dan banyak js perpustakaan tergantung pada perilaku ini dan jadi kami've terbiasa untuk itu dan itu's hampir tidak akan berubah.

Sudut di sisi lain (yang benar-benar tak terduga) urutkan menurut abjad. I've diperiksa kode sumber diriku sendiri, itu adalah hard-coded di sana dan itu akan menjadi bagus jika itu bisa diselesaikan satu hari. Jika (k, v) di obj fitur benar-benar tidak berguna.

Anda benar-benar tidak bisa melakukan apa-apa dengan itu, menipu sudut untuk berpikir anda hasilnya adalah array tidak berguna untuk apa-apa, karena anda akan memerlukan tombol numerik yang kemudian...

Jika ini adalah baik-baik saja, anda dapat menentukan getter untuk panjang:

Object.defineProperty(yourResultObjectOrPrototype, 'length', {
  get: function(){
    return Object.keys(this).length;
  }
})

Jika tidak anda'll memerlukan beberapa jenis filter yang akan iterate objek menggunakan untuk(var k di obj) dan menyimpan hasilnya dalam array.

Sebenarnya ada jawaban: it's disebut orderBy dan tidak semacam:

https://docs.angularjs.org/api/ng/filter/orderBy

{{ orderBy_expression | orderBy : ekspresi : reverse}}

<tr ng-repeat="friend in friends | orderBy:'-age'">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
      <td>{{friend.age}}</td>
    </tr>

Daftar anda hanya perlu daftar, dan anda mungkin perlu sebuah indeks untuk tahu mengatur agar

$scope.Dates = [{index:1, "Today":"30"},
                  {index:2,"This Week":"42"},
                  {index:3,"This Month": "Oct"},
                  {index:4,"This Quarter" : "Bad"},
                  {index:5,"This Year" : 2013}]

dan kemudian

<tr ng-repeat="(key, value) in Dates | orderBy:'index'">
          <td>{{key}}</td>
          <td>{{value}}</td>
         </tr>

Ini adalah tetap sebagai Sudut 1.4.

Lihat detail di sini:

Sebelumnya, urutan item ketika menggunakan ngRepeat untuk iterate atas obyek sifat itu dijamin akan konsisten dengan menyortir tombol dalam urutan abjad.

Sekarang, urutan item ini tergantung browser berdasarkan pesanan kembali dari iterasi objek menggunakan kunci dalam obj sintaks.

tampaknya bahwa browser umumnya mengikuti strategi menyediakan tombol dalam urutan di mana mereka didefinisikan...

Saya mampu untuk mengurutkan Objek String dengan Kunci abjad seperti ini dengan ng-repeat!

Di controller:

$scope.build_config = {
  build_path :  "/x/eng/build",
  arch : "x86",
  variant : "debug",
  run_method : "boot", 
};

$scope.get_keys = function (obj) {
  if (obj)
    return Object.keys(obj);
};

Dalam HTML:

<tr ng-repeat="key in get_keys(build_config) | orderBy:'toString()'">
      <td> {{key}} </td>
      <td> {{selected.build_config[key]}} </td>
</tr>

Objek.kunci doesn't cadangan urutan - FYI https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

// array seperti objek dengan kunci acak pemesanan

var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(an_obj)); // console: ['2', '7', '100']

Saya mengubahnya menjadi sebuah array dari objek

$scope.Dates = [
        { id: "Today",        value:"30" },
        { id: "This Week",    value:"42" },
        { id: "This Month", value: "Oct" },
        { id: "This Quarter", value : "Bad" },
        { id: "This Year",    value : 2013 }
    ];

<li ng-repeat="date in Dates">{{date.id}} -> {{date.value}}</li>

Nah, seperti yang dijelaskan dalam Sudut's dokumentasi untuk ngRepeat

https://docs.angularjs.org/api/ng/directive/ngRepeat#iterating-over-object-properties

ketika menggunakannya untuk iterate atas sifat dari sebuah objek, itu tidak akan bekerja

built-in filter orderBy dan filter tidak bekerja dengan benda-benda, dan akan melempar kesalahan jika digunakan dengan satu.

Solusi terbaik dalam hal ini saya berpikir bahwa adalah menggunakan array, bukan sebuah benda dan sifat-sifatnya. Oleh karena itu, hanya mengubahnya ke array, iterasi sifat-sifat objek dan mendorong ke array baru misalnya. Setelah semua, saya pikir itu akan menjadi pilihan yang tepat untuk koleksi, bukan dari satu objek dengan banyak sifat.

Related communities 1
Angular Indonesia
3 519 pengguna
Framework web development aplikasi web dan mobile https://angular.io/ Facebook Group https://www.facebook.com/groups/462764390497214/ Github Repo Angular ID https://github.com/angular-indonesia Medium Angular Indonesia https://medium.com/angularid