Alihkan menggunakan AngularJS


86

Saya mencoba untuk mengalihkan ke rute lain menggunakan:

$location.path("/route");

Tetapi untuk beberapa alasan itu tidak berhasil. Saya melakukan widget pelengkapan otomatis menggunakan jQuery-UI dan saya memanggil fungsi dari ruang lingkup setelah pengguna memilih opsi. Saya men-debugnya dan itu memasuki fungsi tetapi tidak pernah dialihkan ke rute lain. Itu hanya mengubah rute ketika saya menekan sebuah tombol.

Saya pikir ini agak aneh tetapi saya belum menemukan cara untuk mengatasinya. Saya dulu

window.location = "#/route";

dan berhasil tetapi saya ingin menggunakan path()fungsinya.

Apakah ada yang tahu mengapa ini terjadi?

Jawaban:


109

Dengan contoh kode yang tidak berfungsi, akan mudah untuk menjawab pertanyaan ini, tetapi dengan informasi ini yang terbaik yang dapat saya pikirkan adalah Anda memanggil $ location.path di luar intisari AngularJS.

Coba lakukan ini sesuai arahan scope.$apply(function() { $location.path("/route"); });


Terima kasih banyak dan saya minta maaf karena tidak memposting contoh yang tidak berfungsi. Tapi inilah yang dibutuhkan kode saya.
Tomarto

23
Adakah ide untuk membuatnya bekerja dalam metode .success di dalam permintaan $ http? @Tomarto
Nicholas Kreidberg

2
pada konsol firefox (30 ~) mengaktifkan kesalahan bahwa $ apply cycle is busy
svarog

1
Bagaimana cara kerjanya? Saya mendapatkan error berikut: Error: [$ rootScope: inprog] $ apply sudah dalam proses error.angularjs.org/1.2.15/$rootScope/inprog?p0=%24apply di angular.js: 78 ..... karenanya, ini tidak berfungsi sebagai windows.location = '' ..
Vaibhav

1
@NicholasKreidberg memiliki pertanyaan yang sama dan hanya menambahkan $ scope. $ Apply (); tepat setelah $ location.path ("/ route"); bekerja untuk saya.
Ernesto Allely

81

Jangan lupa untuk menyuntikkan $locationke controller.


2
Tangkapan yang bagus - itulah masalah bagi saya.
Jason Swett

Bagus, terima kasih telah memposting ini, yang tampaknya tidak begitu jelas.
Chuck Conway

20

Dengan asumsi Anda tidak menggunakan perutean html5, coba $location.path("route"). Ini akan mengarahkan browser Anda ke #/routemana yang Anda inginkan.


15

Jika Anda perlu mengalihkan penggunaan aplikasi sudut Anda $window.location. Itu kasus saya; semoga ada yang merasakan manfaatnya.


2

Periksa metode perutean Anda:

jika status perutean Anda seperti ini

 .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
      }
    }
  }) 

maka Anda harus menggunakan

$location.path("/app/register");

0

Sulit untuk mengatakannya tanpa mengetahui kode Anda. Tebakan terbaik saya adalah bahwa onchangeperistiwa tersebut tidak diaktifkan saat Anda mengubah nilai kotak teks Anda dari kode JavaScript.

Ada dua cara agar ini berhasil; yang pertama adalah menelepon onchangeAnda sendiri, dan yang kedua adalah menunggu kotak teks kehilangan fokus.

Periksa pertanyaan ini ; masalah yang sama, kerangka kerja yang berbeda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.