douou9786 2018-05-15 10:14
浏览 20
已采纳

使用HTML数据属性将刀片阵列注入脚本

I have a blade template, which has a script included in it. That script needs access to language strings, which are accessible in a @lang('intro') variable. I am wondering if there is way of injecting the whole array into the script via a html data attribute, and then retrieve it in the script using jquery.

So far I have the following:

../en/intro.php:

<?php
return [
    'step1' => 'Welcome',
    'step2' => 'Step 2',
];

../de/intro.php

<?php
return [
    'step1' => 'Willkommen',
    'step2' => 'Schritt 2',
];

In the blade template I am injecting each string:

<script data-id="intro-script" 
        data-introStep1="@lang('intro.step1')" 
        data-introStep2="@lang('intro.step2')" 
        src="{{ mix('js/intro.js') }}">

And retrieve it using jQuery in the script intro.js:

document.querySelector('script[data-id="intro-script"]').getAttribute('data-introStep1');

This works so far, but isn't great for many more strings. I am wondering if its possible to combine data-introStep1 and data-introStep2 in a single data attribute which contains the whole @lang('intro') array, not just a single string per attribute.

  • 写回答

1条回答 默认 最新

  • doupo1865 2018-05-16 18:52
    关注

    Your translation file can be packed as JSON encoded string like so:

    <script data-id="intro-script" 
        data-intro='@json(__('intro'))'
        src="{{ mix('js/intro.js') }}"
    ></script>
    

    Then, retrieve using Javascript.

    const intro = JSON.parse(
      document.querySelector('script[data-id="intro-script"]').dataset.intro
    );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成