带有客户端数据库的工厂和指令

时间:2014-06-24 17:44:04

标签: angularjs

我有一个工厂正在将数据加载到浏览器端数据库。 在控制器中,我调用dataFactory.LoadData()来成功加载数据。 我需要添加进度条。 我有一个指令,我可以设置进度条的值更改,但我需要工厂能够更新范围,以便我以后可以更新字段,它不能做,或者我需要更新的指令工厂。从我到目前为止看到的情况来看,工厂通常都会被传递给指令,而不是相反。我有什么想法可以让我的工厂加载活动来更新控制器视图? 所以这个过程应该是: 1)工厂加载客户端数据库。 2)当工厂模块加载到数据库时,在视图上显示进度条更改。

1 个答案:

答案 0 :(得分:1)

这可以通过$ scope上的角度事件框架来解决。

$emit()$on()

您的工厂需要引用$ 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
}