Với đoạn mã sau:
var msg = {
field1: val1,
field2: val2,
// more fields
};
$scope.$broadcast("EventName", msg);
Người tiêu dùng sự kiện nhận được một con trỏ đến msg
hoặc một bản sao?
Với đoạn mã sau:
var msg = {
field1: val1,
field2: val2,
// more fields
};
$scope.$broadcast("EventName", msg);
Người tiêu dùng sự kiện nhận được một con trỏ đến msg
hoặc một bản sao?
Người tiêu dùng sự kiện nhận con trỏ cho dữ liệu sự kiện.
Ví dụ:
<div ng-controller="MyCtrl">
<input type="text" ng-model="name.name"/>
<button ng-click="broadcast()">Broadcast event</button>
</div>
<div ng-controller="MyCtrl2">
<input type="text" ng-model="name2.name"/>
</div>
function MyCtrl($scope,$rootScope) {
$scope.name = {name: "MyCtrl"};
$scope.broadcast = function(){
$rootScope.$broadcast('someEvent', $scope.name);
};
}
function MyCtrl2($scope,$rootScope) {
$scope.name2 = null;
$scope.$on('someEvent', function(event, data){
$scope.name2 = data;
});
}
Xem này JSFiddle cho một cuộc biểu tình về điều đó.
Chỉ cần phát giá trị từ trường input
đầu tiên bằng cách sử dụng nút và sau đó cố gắng thay đổi giá trị của bất kỳ trường input
nào.
nó luôn gửi tham chiếu. –
đó là một câu hỏi hay! –