sách gpt4 ai đã đi

Dữ liệu $broadcast tự động - Stack Overflow

In lại 作者:行者123 更新时间:2023-11-29 19:11:42 27 4
mua khóa gpt4 Nike

Tôi đang cố gắng sử dụng $rootScope 从一个 Controller 向另一个 Controller $broadcast 一些数据。

如果我使用像 ng-click 这样的触发器来运行将广播的功能,它似乎工作正常但没有它怎么办?

正如您在 fiddle 中看到的那样,我在 $scope.cast 函数中进行了广播,所以如果我像这样运行该函数,为什么它不起作用:$scope.cast (); ?

fiddle :https://jsfiddle.net/kjgj7Ldz/19/

我需要这个,因为我正在第一个 Controller 中获取一些数据,当它完成时,我想自动广播它而不需要 ng-click,ng-change 或任何其他触发器。

$broaadcast 在这种情况下做错了吗?如果是这样,我怎样才能实现这两个 Controller 之间的数据通信?

1 Câu trả lời

您可以通过创建一个简单的 pub-sub 服务来为您处理通信 channel ,从而避免在 Controller 之间使用范围进行通信。例如,它可以为迟到的订阅者传递所有消息。 Demo .

app.service('MQ', function() {
var listeners = [],
messages = [];

trở lại {
pub: function(message) {
listeners.slice(0).forEach(function(listener) {
thử {
listener(message)
} catch (ignored) {
console.log(ignored)
}
})

// save message for late subscribers.
messages.push(message)
},
sub: function(listener) {
// deliver all messages
messages.slice(0).forEach(function(message) {
thử {
listener(message)
} catch (ignored) {
console.log(ignored)
}
})

// save listener
listeners.push(listener)

// create unbinder
return function() {
listeners.splice(listeners.indexOf(listener), 1)
}
}
}
})

app.controller('Controller1', ['$scope', 'MQ', function($scope, MQ) {
MQ.pub('John Snow')

$scope.cast = function() {
MQ.pub(Math.random())
}
}]);

app.controller('Controller2', ['$scope', 'MQ', function($scope, MQ) {
var unsub = MQ.sub(function(message) {
$scope.message = message
})

// clean-up bindings on scope destroy.
$scope.$on('$destroy', unsub)
}]);

关于javascript - 自动$广播数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38371864/

27 4 0
Bài viết được đề xuất: javascript - 在没有回发的情况下从javascript中的代码调用函数
Bài viết được đề xuất: java - 更改选项卡时执行某些操作
Bài viết được đề xuất: android - Cordova 诊断插件不工作
Bài viết được đề xuất: javascript - 使用正则表达式替换函数调用
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com