Ik ben sinds kort aan het verdiepen aan clientside javascript, ik wil een online applicatie maken waarbij ik (voor mij) de nieuwste technieken wil toepassen.
Op basis van requirejs heb ik een config die o.a. jquery, dropzone en fabric.js en een eigen module inlaad, het starten van de pagina begint vervolgens met mijn eigen app, in deze app voer ik vervolgens diverse jquery commando's en dropzone commando's uit. Al deze code die dus prima werkt bevindt zich allemaal binnen:
Nu wil ik fabric hier aan toevoegen, en op zich werkt dit gedeeltelijk.
Ik gebruik hiervoor o.a.:
Maar als ik een afbeelding wil toevoegen met bijvoorbeeld deze code:
Werkt dit alleen buiten de module scope en zelfs dan alleen als ik niet een eigen functie heb gemaakt van het toevoegen van de afbeelding.
Javascript console zegt me:
Ik kan me voorstellen dat functie's nu niet meer rechtstreeks benaderbaar zijn omdat ik nu binnen mijn eigen module zit te programmeren en dat fabric via een omweg (via requirejs?) benaderbaar is. Echter is het dan wel raar dat ik wel een "var canvas = new fabric.Canvas('c');" kan uitvoeren.
Op basis van requirejs heb ik een config die o.a. jquery, dropzone en fabric.js en een eigen module inlaad, het starten van de pagina begint vervolgens met mijn eigen app, in deze app voer ik vervolgens diverse jquery commando's en dropzone commando's uit. Al deze code die dus prima werkt bevindt zich allemaal binnen:
code:
1
2
3
4
5
| define(['module'], function(module){ $(function() { } }); |
Nu wil ik fabric hier aan toevoegen, en op zich werkt dit gedeeltelijk.
Ik gebruik hiervoor o.a.:
code:
1
2
3
4
| var canvas = new fabric.Canvas('c'); canvas.backgroundColor = '#FFFFFF'; canvas.setHeight(500); canvas.setWidth(500); |
Maar als ik een afbeelding wil toevoegen met bijvoorbeeld deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| function LoadImageArtboard(fid) { var src = 'etc etc etc etc='+ fid; fabric.Image.fromURL(src, function(oImg) { oImg.set({ selectable: true, borderColor: 'grey', cornerColor: 'grey', cornerSize: 6, }); //oImg.setOpacity(1); canvas.add(oImg).renderAll(); canvas.setActiveObject(oImg); }); } |
Werkt dit alleen buiten de module scope en zelfs dan alleen als ik niet een eigen functie heb gemaakt van het toevoegen van de afbeelding.
Javascript console zegt me:
code:
1
2
3
4
5
| 22:50:59.022 TypeError: canvas.add is not a function LoadImageArtboard/<() positioner.js:249 fabric.Image.fromURL/<() fabric.js:2 fabric.util.loadImage/i.onload() fabric.js:2 1 positioner.js:249:5 |
Ik kan me voorstellen dat functie's nu niet meer rechtstreeks benaderbaar zijn omdat ik nu binnen mijn eigen module zit te programmeren en dat fabric via een omweg (via requirejs?) benaderbaar is. Echter is het dan wel raar dat ik wel een "var canvas = new fabric.Canvas('c');" kan uitvoeren.