2015-05-09 4 views
7

Sto utilizzando chrome.browserAction.setBadgeText per aggiungere un badge all'icona del browser dell'estensione che mostra il numero di attività non completate nell'elenco delle cose da fare dell'utente.Come posso rimuovere un badge di azione del browser?

The badge when the user has tasks

Nel momento in cui l'utente ha zero compiti io alla fine con questo:

The badge when the user has zero tasks

Tuttavia quello che preferisco è quello di non mostrare il badge affatto quando l'utente ha zero compiti.

Ecco il mio codice:

setBrowserActionBadge: function(allTasks) { 
    var task_count; 
    task_count = allTasks.filter(function(task) { 
    task.isDone === false; 
    }).length; 

    task_count = task_count.toString(); 

    if (task_count === 0) { 
    task_count = ''; 
    } 

    chrome.browserAction.setBadgeText({ 
    'text': task_count 
    }); 

    chrome.browserAction.setBadgeBackgroundColor({ 
    'color': '#333333' 
    }); 

}; 

Questo metodo viene eseguito ogni volta che le attività vengono controllate off o aggiunti, in modo che gli aggiornamenti in tempo reale.

Quale sarebbe l'ideale è qualcosa come chrome.browserAction.clearBadge che posso eseguire quando il conteggio attività è 0 per rimuovere il badge.

risposta

1

Eri vicino. Vuoi passare una stringa vuota, tuttavia il tuo test if (task_count === 0) non sarà mai vero perché stai utilizzando === invece di ==. Il conteggio delle attività è una stringa quindi mai === 0 (un numero).
è possibile trovare facilmente questo problema utilizzando il debugger di Chrome. Un punto di interruzione in quello if non verrebbe mai colpito in modo da poter andare hmmmm e vederlo.

+0

Ah, interessante. Quindi in realtà sto compilando questo da Coffeescript, e Coffeescript dice quasi sempre "use === always" durante la compilazione su JavaScript. Non credo che tu sappia come posso costringere Coffeescript a compilare == invece? –

+0

Usa '=== "0" 'per continuare a usare quello –

+0

Fantastico, ha funzionato e ha senso. Grazie! –