Bonjour,

je suis un dev c++, et j’essaie de me mettre au JS et je galère. (jusque la rien de bien nouveau ^^ )

J'ai essayé de suivre le cours sur la POO de JPVincent, et j'ai donc adapté son namespace a mes besoin et manifestement mal adapté par ce que ça marche pas comme je voudrais.

Je voudrais faire une classe JS qui s'occupe de remplir un tableau json (qui serait une variable interne de la classe )

Voila mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
JSC_NAMESPACE = {};
 
(function()
{ 
 JSC_NAMESPACE.datas = JSC_NAMESPACE.datas || {};
 
    // constructeur
    JSC_NAMESPACE.datas.JSONLoader = function( jsonFile )
        {
            this.dataTab = [];
            this.dataTab.push("test");
            $.getJSON(jsonFile, function(data)
            {
                $.each(data, function(id, row)
                {
                    this.dataTab.push(row);
                });
            });
        };
 
    // variables et méthodes publiques propres à chaque instance
    JSCHART_NAMESPACE.datas.JSONLoader.prototype =
    {
        countIt:function(){ return this.dataTab.length; },
    };
 
})();
le code html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<script type="text/javascript" src="jsC.js"></script>
    <script type="text/javascript">
        <!--
        $(document).ready(
                function()
                {
                    var obj = new JSC_NAMESPACE.datas.JSONLoader('test1.json');
                    $(toto).html(obj.countIt());
 
 
                });
        //-->
    </script>
Mon problème c'est que à la ligne " this.dataTab.push(CS);" le debugger me dit que this.dataTab est indéfini alors que plus haut " this.dataTab.push("test") "à fonctionné.

"$(toto).html(obj.countIt());" me renvoi 1 soit grâce a la ligne "this.dataTab.push("test") ", sinon il me renverrai 0.

Est ce un problème avec le this ?

Merci d'avance pour votre aide.