data below is being returned undefined:
function selectSearchedTicker(ticker, load) {
    var deferred = $q.defer();
    GetTickersFactory.getTickers('searched', load).then(function(data) {
        console.log('data',data);
        var tempTickers = GetTickersFactory.returnSearchedTickers();
        $rootScope.$emit("select.searched.ticker", tempTickers);
        deferred.resolve();
    });
    return deferred.promise;
}
This is the GetTickersFactory.getTickers function:
function getTickers(type, load, searchedTicker, cached) {
    type = type || 'portfolio';
    load = load || '';
    searchedTicker = searchedTicker || {};
    var deferred = $q.defer(),
        promise;
    if (cached) portfolioCached = cached;
    //other code remains same
    tickersPane = ScopeFactory.getScope('tickersPanel');
    switch (type) {
        case 'searched':
            return ApiFactory.getTickers(null, load).then(function(data) {
                //renderTickers just does logic, no more API call
                searchedTickers.that = renderTickers(data.data.tickers, searchedTicker, 'searched');
                promise = searchedTickers.that;
                console.log('promise',promise); // <-- there is data here
                deferred.resolve(promise);
                // return returnData(searchedTickers.that);
            });
            break; // <-- after hitting this break, chrome tools hits the Angular code
        //...
    }
    return deferred.promise; // <- also tried return promise
    // other functions...
}
You can see above promise = searchedTickers.that; when I log that, I see the data I want returned inside it. However it never makes it back to my original selectSearchedTicker function.
Update: Added this code which precedes everything, I had to make a promise chain, because I need to wait till TickersSelectFactory.selectSearchedTicker is called and the results of those actions are finished, before I call the 2 $emit's.
TickersSelectFactory.selectSearchedTicker(fullTicker.ticker, selectTickerUrl).then(function(res) {
    console.log('selectSearchedTicker promise returned');
    $rootScope.$emit("clear.tags.array");
    $rootScope.$emit("search.ticker.clicked", fullTicker);
});
Originally it looked like this and was giving me problems:
TickersSelectFactory.selectSearchedTicker(fullTicker.ticker, selectTickerUrl);
$rootScope.$emit("clear.tags.array");
$rootScope.$emit("search.ticker.clicked", fullTicker);
 
    