2016-09-22 33 views
0

AmChartsでチャートを作成するために使用している次のRequireJSモジュールがあります。 (私は簡潔さのためにいくつかのコードを削除しました)。TypeError: 'in'オペランドが無効ですRequireJSモジュール内でそれぞれjQueryを呼び出すときのエラー

define('admin/stats', ['jquery', 'amcharts.serial'], function($, AmCharts) { 

    var historicalStats = { 

     init: function(rawData, axesMarker) { 

      var originalData = rawData, 
      charts = $('#charts'); 

      console.log(originalData); 

      $.each(originalData, function(graphName, config) { 
       // ...call a function in here... 
      }); 

     } 

    }; 

    return historicalStats; 

}); 

これは私がそれを呼び出しています方法です:

<script type="text/javascript"> 

    require(['admin/stats'], function(stats) { 
     stats.init('{{ data|raw }}', '{{ "graphs.axes.filesize"|trans({}, "admin") }}'); 
    }); 

</script> 

私が持っている問題は、以下の行$.each(originalData, function(graphName, config) {エラーです:

TypeError: invalid 'in' operand a
...w:this,function(a,b){function c(a){var b="length"in a&&a.length,c=_.type(a);retu...

(私が縮小化するgruntを使用していますJavaScript)。

originalDataは次のようになります。

{"users":{"series":[{"field":"users","title":"Users"}],"type":"raw","axesMarker":"Users","data":[]},"fileusage":{"type":"filesize","axesMarker":"File size","series":[],"data":[]},"dbsize":{"series":[{"field":"dbsize","title":"Database size"}],"type":"filesize","axesMarker":"File size","data":[]}}

私は他のすべてをコメントアウトすることによって、バック、個々の行にエラーをトレースしています。その行について間違っているのは何ですか?この呼び出しで

答えて

1

stats.init('{{ data|raw }}', '{{ "graphs.axes.filesize"|trans({}, "admin") }}'); 

あなたが最初の引数として文字列を渡します。そして、この文字列に"length"を探すために$.each試行:"length" in aastats.initに渡される最初の引数として同じ値に初期化された場合

{{ data|raw }}が正しくフォーマットされたJavaScriptオブジェクトまたはJSONである場合は、引用符をドロップすることができます。。しかし、私はあなたのコードでrawDataoriginalDataにコピーすることを心配しています。引用符を削除してJavaScriptオブジェクトを取得する場合は、originalDataを後のコードで変更すると、rawDataも同様の変更あなたはそれを複製していませんので、それをoriginalDataへの変更から隔離したい場合、それをクローンする必要があります(The再クローンを作成するには、多くの方法があなたのケースに最適な、あるは、あなたの質問に含まれていない詳細に依存)

あるよう-が、関数の内部で行うもう一つの可能​​性はstats.initに電話を残すために、次のようになります。

var originalData = JSON.parse(rawData) 

これは、{{ data|raw }}が正しくフォーマットされたJSONであることを前提としています。

+0

'' {{data | raw}} ''のまわりで '''を削除するのが解決策でした。ありがとうございました。 – crmpicco

関連する問題