2015-05-22 22 views
5

Tuvalle direktifli bir çalışma yapmaya çalışıyorum (muhtemelen aptalca bir hatayla).Angularjs direktifindeki basit kanvas

Kodumu çalıştırdığımda, öğem aslında bir HTMLCanvasElement öğesi olduğu için garip görünen bir element.getContext is not a function olsun.

Bu benim yönergesi

.directive('pitchCanvas', function() { 

    function link(scope, element, attrs) { 
     console.info('element: ' + element); 
     var ctx = element.getContext('2d'); 
     ctx.font = "30px Arial"; 
     ctx.fillText("Hello World", 10, 50); 
    } 

    return { 
    restrict: 'E', 
    replace: true, 
    scope: true, 
    link: link, 
    template: '<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"></canvas>' 
    }; 
}) 

ve bu benim kod ve ayrımın yapılması yapmak işin basitleştirilmiş bir sürümünü yerleştirilen bir fiddle olduğunu.

Herhangi bir yardım çok takdir edilecektir.

cevap

7

Sen değiştirmelisiniz:

element.getContext('2d'); 

olarak:

element[0].getContext('2d'); 
+0

Great! ama neden? öğe zaten tuval değil mi? – David

+1

Bunun nedeni, öğenin yerel javascript kullanarak sorguladığınızda aldığınızın tersine bir düğüm olmamasıdır. Aslında jqLite nesnesidir (jQuery nesnesine benzer). Yani, jquery nesnesini düz javascript nesnesine dönüştürmek için yaptığımız gibi, bu da javascript işlevlerini kullanmaya dönüştürülmelidir. – Kop4lyf