angular.js - angular路由的控制器
PHP中文网
PHP中文网 2017-05-15 16:50:44
0
3
713

路由时两个页面能公用一个控制器吗,比如

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

如果行的话,控制器是独立的作用域还是公用的,比如说我在控制器里声明了个变量i,在a页面中改变了i的值,当我路由到b页面时,i的值会跟着变吗

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!