Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 带有客户端数据库的工厂和指令_Angularjs - Fatal编程技术网

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

Angularjs 带有客户端数据库的工厂和指令,angularjs,Angularjs,我有一个工厂正在将数据加载到浏览器端数据库。 在控制器中,我调用dataFactory.LoadData(),它成功地加载了数据。 我需要添加一个进度条。 我有一个指令,可以设置进度条的值更改,但我需要工厂能够更新范围,以便以后可以更新字段,这是工厂无法做到的,或者我需要工厂更新指令。从我目前所看到的情况来看,工厂通常是通过指令而不是相反的方式。有没有办法让我的工厂加载活动更新控制器视图? 因此,这个过程应该是: 1) Factory加载客户端数据库。 2) 当factory模块加载到数据库时,

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

这可以通过angular在$scope上的事件框架实现

您的工厂需要引用$scope。在适当的时候,工厂将使用$emit将事件发送到您的指令正在侦听的范围。然后,该指令将更新进度条。您可以使用参数$emit随事件一起发送信息

工厂:

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
}

您可以使用并实现notify方法。我了解到工厂不能接受$scope,只能接受$rootscope。不幸的是,我甚至无法成功地通过$rootscope。你有一个例子吗?我不明白你为什么不能把作用域作为参数传入。然而,这可能不是一个伟大的实践。听起来你可能想看看承诺。这里有更多的信息:承诺是否遵循。那么()承诺会导致下一个子承诺?我确实有每个表负载的链接承诺,但如何工作?每个.then().then()是否将承诺返回给控制器或下一个then()语句,直到它们全部运行完毕?我认为它将流向下一个then()语句。这将不允许我更新progressbar