2013-03-31 46 views
1

在AngularJS應用(Chrome擴展)中,我需要獲取當前選項卡的標題和URL,然後才能執行任何有用的操作。這個函數需要一個回調函數,它接收有問題的標籤。但是,不是記錄選項卡對象,而是在它可用時立即將它傳遞給模塊/服務。我怎樣才能做到這一點?與AngularJS異步獲取Chrome選項卡

chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { 
    console.log(tabs[0]); 
}); 

chrome.tabs.query()顯然沒有返回值。

編輯
我被卡住了。我試圖讓你的榜樣工作:

http://jsfiddle.net/yW5G7/

失敗後,我把一個非常簡單的測試服務,以表明該應用的工作原理的其餘部分。也許有人可以在註釋掉的區塊中修復我的服務?

回答

0

您既可以使用AngularJs的延遲初始化,也可以創建一個返回承諾以異步解析標籤信息的服務。

延遲初始化:

chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { 
    angular.bootstrap(document); 
}); 

異步服務與promise

module.service('Chrome', function($q) { 
    return function() { 
    this.getInfo = function() { 
     var deferred = $q.defer(); 
     chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { 
     deferred.resolve(tabs[0]); 
     }); 
     return deferred.promise; 
    }; 
    }; 
}); 

最好方法取決於你最初的多少化過程取決於選項卡與獲取此信息對於解決擴展的特定部分很重要。

相關問題