Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Berkongsi Data Secara Berkesan Antara Pengawal AngularJS?

Bagaimanakah Saya Boleh Berkongsi Data Secara Berkesan Antara Pengawal AngularJS?

DDD
Lepaskan: 2024-12-17 05:49:26
asal
438 orang telah melayarinya

How Can I Effectively Share Data Between AngularJS Controllers?

Berkongsi Data antara Pengawal AngularJS

AngularJS ialah rangka kerja yang popular untuk membina aplikasi satu halaman. Selalunya, adalah perlu untuk berkongsi data antara pengawal. Contoh biasa ialah borang berbilang langkah di mana data yang dimasukkan dalam satu langkah kemudian digunakan di berbilang lokasi.

Masalahnya

Pertimbangkan kod berikut:

<div ng-controller="FirstCtrl">
    <input type="text" ng-model="FirstName">
    <br>Input is : <strong>{{FirstName}}</strong>
</div>

<hr>

<div ng-controller="SecondCtrl">
    Input should also be here: {{FirstName}}
</div>
Salin selepas log masuk
var myApp = angular.module('myApp', []);

myApp.factory('Data', function(){
    var FirstName = '';
    return FirstName;
});

myApp.controller('FirstCtrl', function( $scope, Data ){

});

myApp.controller('SecondCtrl', function( $scope, Data ){
    $scope.FirstName = Data.FirstName;
});
Salin selepas log masuk

Dalam kod ini, data yang dimasukkan dalam medan input dalam pengawal FirstCtrl tidak dikemas kini secara automatik dalam SecondCtrl pengawal. Ini kerana kilang Data mengembalikan nilai primitif (FirstName ialah rentetan), bukan rujukan objek.

Penyelesaian

Penyelesaian yang mudah ialah memiliki kilang kembalikan objek dan biarkan pengawal berfungsi dengan rujukan kepada objek yang sama:

myApp.factory('Fact', function(){
  return { Field: '' };
});

myApp.controller('FirstCtrl', function( $scope, Fact ){
  $scope.Alpha = Fact;
});

myApp.controller('SecondCtrl', function( $scope, Fact ){
  $scope.Beta = Fact;
});
Salin selepas log masuk
<div ng-controller="FirstCtrl">
    <input type="text" ng-model="Alpha.Field">
    First {{Alpha.Field}}
</div>

<div ng-controller="SecondCtrl">
    <input type="text" ng-model="Beta.Field">
    Second {{Beta.Field}}
</div>
Salin selepas log masuk

Dengan pendekatan ini, kedua-duanya pengawal berkongsi rujukan kepada objek yang sama dan perubahan yang dibuat pada objek dalam satu pengawal secara automatik dicerminkan dalam pengawal yang lain.

Pilihan Terperinci

Untuk senario yang lebih kompleks , anda boleh menggunakan getter dan setter untuk mengawal akses kepada data yang dikongsi. Pendekatan ini memberi anda lebih kawalan ke atas cara data dikemas kini dan boleh membantu menghalang意外的更改。

Kesimpulan

Berkongsi data antara pengawal AngularJS ialah tugas biasa. Dengan memahami pelbagai teknik yang tersedia, anda boleh memilih pendekatan yang paling sesuai dengan keperluan aplikasi khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Berkongsi Data Secara Berkesan Antara Pengawal AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan