2016-05-13 18 views
1

Kann ich das Textelement einer D3-Form so einstellen, dass es nur angezeigt wird, wenn eine Variable einen Wert hat? Im folgenden Code wird ein Rechteck gerendert, aber die Breite ändert sich je nach dem Wert selections (ein Array von Dokument-IDs). Wenn selections leer ist, möchte ich immer noch die Form rendern, möchte aber keine Textbeschriftung. Im Moment sehe ich $ NaN. Nicht sicher, wo die if-Anweisung hier eingefügt werden soll.D3-Textbeschriftungen nur anzeigen, wenn die Variable einen Wert hat

Template.Box.onRendered (function() { 
    const self = this; 

    //List of variables to calculate dimensions 
    var value = //Result of calculations 
    var selections = Template.parentData(0).selections; 
    var boxContainer = d3.select("#box" + boxId) 
     .append("svg") 
     .attr("id", "svg-box"); 

    var box = boxContainer.append("rect") 
     .attr("x", start + "%") 
     .attr("y", 0) 
     .attr("height", 50) 
     .attr("width", range + "%") 
     .attr("id", "box" + boxId); 

    var boxValue = boxContainer.append("text") 
     .attr("x", boxSpace + "%") 
     .attr("y", "20px") 
     .text(value) 
     .attr("id", "low" + boxId); 

    self.autorun(function() { 
     //repeat code from above 
    }); 
}); 
+0

ist der Wert immer eine Zahl? – echonax

+0

Ja, aber beim ersten Rendern sind die zur Berechnung dieser Zahl erforderlichen Eingaben noch nicht vorhanden. – Bren

Antwort

0

Sie können dies zu Ihrem Textattribut hinzufügen.

Wenn keine d.data.i vorhanden ist, wird die Anzeige auf none gesetzt. Null bedeutet, dass es angezeigt wird.

Verwandte Themen