2016-03-23 7 views
0

Kendi özel HTML öğelerinizi oluşturmaktan başka, öğelerin boyutunun (örneğin, bir dikdörtgen) içinde sakladığınız öğelere bağımlı olmasının bir yolu var mıdır. Örneğin, Foo görüntülemek istiyorsam, öğe küçüktür, ancak This is a really long string için öğe çok daha büyük olacaktır. Bu özel öğeler oluşturmadan mümkün mü?Dinamik JointJS öğe boyutu

cevap

0

Özel bir öğe modeli ile bunu nasıl yaparsınız. aşağıya Eleman modelse

,

joint.shapes.custom.CustomElement = joint.shapes.devs.Model.extend({ 
defaults: joint.util.deepSupplement({ 
    type: 'custom.CustomElement', 
    position: { x: 300, y: 50 }, 
    size: { width: 90, height: 90 }, 
}, joint.shapes.devs.Model.prototype.defaults) }); 

Ve örneğini sefer, yaklaşımı aşağıda takip edebilirsiniz zaman elemanın etiketi ayarlarken varsayarak (o genişlik ve yükseklik sabit aldığına dikkat edin)

var label = "My Element Label"; 
var elem = new joint.shapes.custom.CustomElement({ 
    size: { width: label.length*12, height: 80 }, 
    attrs: { 
     '.label': {text: label} 
    } 
}); 

graph.addCell(elem); 

Burada genişlik length of label * (font size of label in pixel) ve yüksekliği sabittir.

Ancak, özel bir model oluşturmak istemediğinizden, öğeyi oluşturduktan sonra (modelin örneği), aşağıdaki özellikleri grafiğe eklemeden önce ayarlayabilirsiniz.

var label = "my custom label"; 
var elem = // create your element 
elem.attributes.size.width = label.lenght*12 
graph.adddCell(elem) 
+0

Yaptığım şey budur. Modeli, bir metin etiketinin büyüklüğüne ve uzunluğuna göre yeniden boyutlandırmanın daha basit ve zarif bir yolu olduğunu umuyordum. – Fjotten