angular.js - Pengawal untuk penghalaan sudut
PHP中文网
PHP中文网 2017-05-15 16:50:44
0
3
819

Bolehkah dua halaman berkongsi pengawal semasa penghalaan, seperti

javascript    .state('a', {
        ...
        controller : 'aaaController'
    })
    .state('b', {
        ...
        controller : 'aaaController'
    })

Jika ya, adakah pengawal skop bebas atau awam Contohnya, jika saya mengisytiharkan pembolehubah i dalam pengawal dan menukar nilai i dalam halaman a, apabila saya membuat laluan ke b Apabila halaman dibuka, adakah nilai i akan berubah dengan sewajarnya?

PHP中文网
PHP中文网

认证0级讲师

membalas semua(3)
伊谢尔伦

Saya juga sedang belajar angularjs baru-baru ini Mengenai masalah yang dinyatakan oleh poster, saya boleh membuat demonstrasi mudah:

Terdapat struktur html berikut, pandangan berbeza, pengawal yang sama

<p ng-controller="MyCtrl">
    <button ng-click="change()">change to 3</button>
</p>
<p ng-controller="MyCtrl">
    <button ng-click="show()">show</button>
</p>

Sebahagian daripada kod pengawal:

 .controller('MyCtrl', function ($scope, $log) {
        $scope.num = 2;
        $scope.change = function () {
            $scope.num = 3;
        };

        $scope.show = function () {
            $log.info($scope.num);
        };
    });

Klik pertama butang tunjukkan, hasil output adalah seperti berikut:

Kemudian klik butang tukar kepada 3 dan klik butang tunjukkan sekali lagi Hasilnya adalah seperti berikut:

Dapat dilihat daripada eksperimen ini bahawa walaupun ia adalah pengawal yang sama, skop tersebut sebenarnya adalah dua skop yang tidak berkaitan sama sekali.
Struktur skop juga berbentuk pokok, sepadan dengan struktur dom Struktur html di atas akan mempunyai dua skop.
Mari lihat contoh lain yang jelas:

 .controller('MyCtrl', function ($scope, $log) {
        $log.info('init scope...');
    });

Lihat konsol

Hasilnya dicetak dua kali, menunjukkan bahawa kaedah itu telah dilaksanakan dua kali. Jika skop dikongsi, ia tidak akan dilaksanakan dua kali.

Ringkasnya: anda mengisytiharkan pembolehubah i dalam pengawal dan menukar nilai i dalam halaman a Apabila anda menghala ke halaman b, nilai i tidak akan berubah

Semoga membantu anda!

我想大声告诉你

Sungguh pelik untuk menggunakannya dengan cara ini, saya tidak pasti sama ada ia boleh digunakan dengan cara ini

Secara peribadi saya rasa penggunaan biasa ialah:
Satu halaman, satu pengawal
Jika anda perlu berkongsi pembolehubah dan kaedah antara pengawal, anda boleh membina perkhidmatan dalam sudut untuk menyimpan pembolehubah dan kaedah Dalam pengawal yang berbeza, hanya masukkan perkhidmatan yang kami tulis

Dokumentasi rasmi juga menyatakan dengan jelas bahawa perkhidmatan digunakan untuk berkongsi kod:
Perkhidmatan
Perkhidmatan sudut ialah objek boleh diganti yang disambungkan bersama menggunakan suntikan kebergantungan (DI). Anda boleh menggunakan perkhidmatan untuk mengatur dan berkongsi kod merentas apl anda.

https://docs.angularjs.org/guide/services

伊谢尔伦

Selepas menukar laluan, kitaran hayat pengawal telah tamat dan $scope semasa serta sub-skop telah mati.
Jika anda perlu berkongsi data antara berbilang pengawal, anda boleh menggunakan perkhidmatan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan