angular.js - angular指令 作用域问题
我想大声告诉你
我想大声告诉你 2017-05-15 16:58:21
0
4
588

如何让指令内部的controller生成的数据传到指令外部的控制器中

我想大声告诉你
我想大声告诉你

membalas semua(4)
漂亮男人

Mari kita bincangkan tentang tiga kaedah dahulu:

  1. Jawapan di tingkat atas menggunakan komunikasi penyiaran, $emitke atas, $broadcastke bawah

  2. service Berkongsi data bermakna menyuntik service yang sama ke dalam directive dan controller, dan kemudian mengendalikan data ini service

  3. Sudah tentu, jika directive anda berada di dalam controller, anda boleh mengakses skop controller (dengan syarat tiada skop bebas dibuat), terus dalam directive controller Just beroperasi scope dan anda telah selesai

漂亮男人

$skop dalaman.$emit("pancarkan",data)
$skop luaran.$on("pancarkan",fungsi(ev,data){console.log(data)})

世界只因有你

Gunakan skop bebas, "=" pengikatan dua hala dan hantar data yang anda ingin ikat melalui parameter dalam arahan.

仅有的幸福

Terdapat banyak cara, bergantung pada cara anda ingin menggunakan data anda.

Pengedaran melalui langganan acara dan siaran

//$rootScope
$rootScope.$on('data-pass',function(event, data){ $rootScope.$broadcast('data-receive', data) })
// 传递数据的controller
$scope.$emit('data-pass', data)
// 需要数据的controller
$scope.$on('data-receiver', function(event, data){
    // use data to do something
})

Tulis semula nilai sifat objek pada skop akar melalui ciri pewarisan $scope

// 根作用域
$rootScope.data = {}
// 传递数据的controller
$scope.data.record = {}
// 需要数据的controller
// use $scope.data.record to do something

Gunakan modul awam bersudut untuk penyimpanan data dan masukkannya ke dalam pengawal yang anda perlu gunakan

angular.factory('publicData',function(){
    return {}
});
// 传递数据的controller
angular.controller('passController',function($scope, publicData){
    publicData.record = {}
})
// 需要数据的controller
angular.controller('needController',function($scope, publicData){
    // use publicData.record to do something
})
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan