2015-05-09 3 views
7

Ich verwende chrome.browserAction.setBadgeText, um dem Browsersymbol meiner Erweiterung ein Badge hinzuzufügen, das die Anzahl der nicht abgeschlossenen Aufgaben in der ToDo-Liste des Benutzers anzeigt.Wie kann ich ein Browser-Aktions-Badge entfernen?

The badge when the user has tasks

Im Moment, wenn der Benutzer Null Aufgaben hat ich mit diesem Ende:

The badge when the user has zero tasks

jedoch, was ich lieber nicht das Abzeichen zu zeigen, überhaupt, wenn der Benutzer hat keine Aufgaben.

Hier ist mein Code:

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' 
    }); 

}; 

Diese Methode jedes Mal ausgeführt wird, Aufgaben überprüft werden oder dazusetzen, so dass es in Echtzeit aktualisiert.

Was wäre ideal ist etwas wie chrome.browserAction.clearBadge, die ich ausführen kann, wenn die Aufgabe zählt 0 ist, um das Abzeichen zu entfernen.

Antwort

1

Sie waren in der Nähe. Sie möchten eine leere Zeichenfolge übergeben, aber Ihr Test if (task_count === 0) wird nie wahr sein, weil Sie === anstelle von == verwenden. Task Count ist eine Zeichenkette also nie === 0 (eine Zahl).
Sie können dieses Problem mithilfe des Chrome-Debuggers leicht finden. Ein Breakpoint in dem if würde nie schlagen, also würden Sie hmmmm gehen und es sehen.

+0

Ah, interessant. Also kompiliere ich das tatsächlich von Coffeescript, und Coffeescript sagt ziemlich viel "benutze === immer" beim Kompilieren zu JavaScript. Ich nehme nicht an, dass Sie wissen, wie ich Coffeescript zwingen kann, zu == zu kompilieren? –

+0

Verwenden Sie '===" 0 "', um weiter zu verwenden –

+0

Super, das hat funktioniert und macht Sinn. Vielen Dank! –

Verwandte Themen