2016-10-12 33 views
0

我正在創建一個簡單的joint.shapes.devs.Model並分配文本屬性,但文本不出來,而是標記爲「模型」。JointJS模型 - 未分配文本屬性

function makeEditableElement(label) { 

     var maxLineLength = _.max(label.split('\n'), function(l) { return l.length; }).length; 

     // Compute width/height of the rectangle based on the number 
     // of lines in the label and the letter size. 0.6 * letterSize is 
     // an approximation of the monospace font letter width. 
     var letterSize = 15; 
     var width = 2 * (letterSize * (0.3 * maxLineLength + 1)); 
     var height = 2 * ((label.split('\n').length + 1) * letterSize); 

     return new joint.shapes.devs.Model({ 
      '.label': label, 
      size: { width: width, height: height }, 
      inPorts: [''], 
      outPorts: [''], 
      attrs: { '.inPorts circle': { r: 3 ,fill: 'gray', type: 'input',magnet: 'passive'}, 
        '.outPorts circle': { r: 3 ,fill: 'gray', type: 'output',magnet:'true' }, 
        rect: { width: width, height: height, fill: '#FFF' ,rx: 5,ry: 5, 'stroke-width':1.5, 'stroke': '#555' }, 
        text: { text: label, fill: '#555' , 'font-size': 13, magnet: true,'font-weight': 'normal'} 
       } 
     }); 
    } 
graph.addCell(makeEditableElement("foo")); 
joint.layout.DirectedGraph.layout(graph, { setLinkVertices: false }); 

請指出我是否缺少一些東西,因爲我是JointJS的新手。提前致謝。

回答

1

我把它通過改變工作標籤內的'.label'的位置如下:

function makeEditableElement(label,x,y) { 

     var maxLineLength = _.max(label.split('\n'), function(l) { return l.length; }).length; 

     // Compute width/height of the rectangle based on the number 
     // of lines in the label and the letter size. 0.6 * letterSize is 
     // an approximation of the monospace font letter width. 
     var letterSize = 15; 
     var width = 2 * (letterSize * (0.3 * maxLineLength + 1)); 
     var height = 2 * ((label.split('\n').length + 1) * letterSize); 

     return new joint.shapes.devs.Model({ 
      id: label, 
      position: {x:x, y:y}, 
      size: { width: width, height: height, fill: 'transparent' ,rx: 5,ry: 5, 'stroke-width':1.5, 'stroke': '#31d0c6' }, 
      inPorts: [''], 
      outPorts: [''], 
      attrs: { '.label': {text: label}, 
        '.inPorts circle': { r: 3 ,fill: 'gray', type: 'input',magnet: 'passive'}, 
        '.outPorts circle': { r: 3 ,fill: 'gray', type: 'output',magnet:'true' }, 
        rect: { width: width, height: height, fill: 'transparent' ,rx: 5,ry: 5, 'stroke-width':1.5, 'stroke': '#31d0c6' }, 
        text: { text: label, magnet: true, 'font-size': letterSize, 'font-family': 'monospace' } 
       } 
     }); 
    } 
+0

不錯,很高興您能夠使用它。繼續並將其標記爲已回答:) – Pat

0

'.label'需要分配包含文本屬性的對象 - 要指定它只有字符串「foo」

嘗試,而不是執行以下操作:

... 

'.label': { text: label }, 

... 
+0

我已經完全用你的建議試過了,它也不起作用。另外,如果文本不在這裏設置:'attrs:{text:{text:label}}' – SMJoe

+0

它是否給出了相同的錯誤? (未分配文本屬性) – Pat

+0

不引發錯誤,它會在元素上顯示「模型」作爲標籤。 – SMJoe

相關問題