web-dev-qa-db-ja.com

変数をJavaScriptコードに渡すことができないのはなぜですか?

私は誰かがこれについていくつかの光を当てることができることを望んでいます。私は自分の最初のDrupal 8カスタムブロックを介してカスタムブロックを構築しています。JavaScriptにいくつかの値を渡そうとするまで、すべてうまくいきました。いくつかのモリスに取り組んでいます。 jsグラフ、およびデータベースからのデータを表示したい。

私は数多くのバリエーションを試しましたが、変数を機能させることができません。ところで、私はJavascriptが得意ではないので、そこに欠陥があるかもしれません。

ライブラリの定義は次のとおりです。

 morris:
  css:
    theme:
      /libraries/morris/morris.css: {}
  js:
    /libraries/morris/morris.min.js: {}
    /libraries/raphael-master/raphael.min.js: {}
    js/custom.js: {}
    dependencies:
    - core/jquery
    - core/drupal.ajax
    - core/drupal
    - core/drupalSettings
    - core/jquery.once

ブロックファイルの関連部分は次のとおりです。

 $build['#attached']['library'][] = 'module_machine_name/morris';
$build['#attached']['drupalSettings']['module_machine_name']['morris']['memGraph'] = $graph_total;

そしてここにjsファイルがあります:

     var infoo;

    (function ($, Drupal, drupalSettings) {
      Drupal.behaviors.module_machine_name = {
        attach: function (context, settings) {

            infoo = drupalSettings.module_machine_name.morris.memGraph;

        Morris.Bar({
      element: 'graph',
      data: [
        {x: '2011 Q1', y: infoo, z: 2, a: 6},
        {x: '2011 Q2', y: 2, z: null, a: 1},
        {x: '2011 Q3', y: 0, z: 2, a: 4},
        {x: '2011 Q4', y: 2, z: 4, a: 3}
      ],
      xkey: 'x',
      ykeys: ['y', 'z', 'a'],
      labels: ['Y', 'Z', 'A']
    }).on('click', function(i, row){
      console.log(i, row);
    });



        }
      };


})(jQuery, Drupal, drupalSettings);

誰か助けてもらえますか?ありがとう

4
infoo

順番を変えてみましたか?

最初にdrupalSettings添付ファイルをロードし、ライブラリの後にロードしますか?

$build['#attached']['drupalSettings']['module_machine_name']['morris']['memGraph'] = $graph_total;
$build['#attached']['library'][] = 'module_machine_name/morris';
1
estoyausente