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