TradingView не определен в монтированном хуке Vue

1

Я не знаю, должен ли я задавать вопрос здесь или в другом месте, но я использую библиотеку tradingview, которая работает для меня, но не так, как я хочу.

В соответствии с документами я помещаю свой код в файл index.html в vue, в теге скрипта и в моем tradingview, однако я хочу, чтобы этот код был mounted, но я получаю эту ошибку:

Ошибка в подключенном крюке: "ReferenceError: TradingView не определен"

Вот пример кода в файле index.html который работает:

<script type="text/javascript" src="/charting_library.min.js"></script>
<script type="text/javascript" src="/tv.js"></script>
<script>

function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

TradingView.onready(function() {
  var widget = new TradingView.widget({
    symbol: 'Bitfinex:ETHUSD',
    interval: '30',
    theme: 'Dark',
    style: '1',
    container_id: "tv_chart_container",
    library_path: "/charting_library/",
    locale: getParameterByName('lang') || "en",
    width: '100%',
    height: '600px',
    debug: false,
    preset: "mobile"
  });

})

И вот код, установленный в моем файле vue:

mounted () {
TradingView.onready(function() {
  new TradingView.widget({
    symbol: 'Bitfinex:ETHUSD',
    interval: '30',
    theme: 'Dark',
    style: '1',
    container_id: "tv_chart_container",
    library_path: "/charting_library/",
    locale: this.getParameterByName('lang') || "en",
    width: '100%',
    height: '600px',
    debug: false,
    preset: 'mobile'
  })
})
}

Кто-нибудь знает, почему TradingView здесь не определен?

Теги:
vue.js
trading-view

2 ответа

1
Лучший ответ

если у кого-то будет такая же проблема, так что для меня setTimeout сделал трюк. Вот код:

mounted () {
  setTimeout(function() {
   // TradingView code
  }, 1000)
}
1

Вам не хватает скрипта vue поэтому добавьте его следующим образом:

    <script src="/vue.js"></script>

проверьте этот рабочий код:

new Vue({
  el: '#app',

  data() {
    return {
   
     
     }
  },
 mounted () {
TradingView.onready(function() {
  new TradingView.widget({
    symbol: 'Bitfinex:ETHUSD',
    interval: '30',
    theme: 'Dark',
    style: '1',
    container_id: "tv_chart_container",
    library_path: "/charting_library/",
    locale: this.getParameterByName('lang') || "en",
    width: '100%',
    height: '600px',
    debug: false,
    preset: 'mobile'
  })
})
}
  });
<script type="text/javascript" src="/charting_library.min.js"></script>
<script type="text/javascript" src="/tv.js"></script>
<script src="/vue.js"></script>
<script>

function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

</script>
<div id="app">
</div>
  • 0
    спасибо за ваш ответ, но после добавления сценария src он остается прежним: /
  • 0
    но когда вы запускаете мой фрагмент кода, он работает нормально
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню