Google chrome 使用AngularJS异步获取Chrome选项卡

Google chrome 使用AngularJS异步获取Chrome选项卡,google-chrome,google-chrome-extension,angularjs,Google Chrome,Google Chrome Extension,Angularjs,在AngularJS应用程序(Chrome扩展)中,我需要获得当前选项卡的标题和URL,然后才能做任何有用的事情。此函数接受回调,该回调接收相关选项卡。但是,我不想记录tab对象,而是希望在它可用时尽快将其传递给模块/服务。我该怎么做 chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { console.log(tabs[0]); }); chrome.tabs.query()显然没有返回值 编辑

在AngularJS应用程序(Chrome扩展)中,我需要获得当前选项卡的标题和URL,然后才能做任何有用的事情。此函数接受回调,该回调接收相关选项卡。但是,我不想记录tab对象,而是希望在它可用时尽快将其传递给模块/服务。我该怎么做

chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
    console.log(tabs[0]);
});
chrome.tabs.query()显然没有返回值

编辑
我卡住了。我试图让你的例子起作用:


失败后,我加入了一个非常简单的测试服务,以显示应用程序的其余部分工作正常。也许有人可以在注释掉的块中修复我的服务?

您可以使用AngularJs的延迟初始化,或者创建一个服务,返回异步解析选项卡信息的承诺

延迟初始化:

  • 删除ng app指令,当您有以下信息时:
chrome.tabs.query({currentWindow:true,active:true},函数(tabs){
角度引导(文档);
});
异步服务,包括:

模块服务('Chrome',功能($q){
返回函数(){
this.getInfo=函数(){
var deferred=$q.deferred();
chrome.tabs.query({currentWindow:true,active:true},函数(tabs){
递延。解决(制表符[0]);
});
回报。承诺;
};
};
});
最好的方法取决于初始化过程在多大程度上依赖于选项卡,而获取这些信息对于解决扩展的特定部分有多重要