我有一个工厂正在将数据加载到浏览器端数据库。 在控制器中,我调用dataFactory.LoadData()来成功加载数据。 我需要添加进度条。 我有一个指令,我可以设置进度条的值更改,但我需要工厂能够更新范围,以便我以后可以更新字段,它不能做,或者我需要更新的指令工厂。从我到目前为止看到的情况来看,工厂通常都会被传递给指令,而不是相反。我有什么想法可以让我的工厂加载活动来更新控制器视图? 所以这个过程应该是: 1)工厂加载客户端数据库。 2)当工厂模块加载到数据库时,在视图上显示进度条更改。
答案 0 :(得分:1)
这可以通过$ scope上的角度事件框架来解决。
您的工厂需要引用$ scope。在适当的时候,工厂将使用$ emit在您的指令正在侦听的范围内发送事件。然后该指令将更新进度条。您可以使用$ emit的args参数与事件一起发送信息。
厂:
factoryMethod() {
$scope.$emit('my.special.event', args);
}
指令:
$scope.$on('my.special.event', function(event, args) {
//use the event and args to update the progess bar
}