Я не знаю, должен ли я задавать вопрос здесь или в другом месте, но я использую библиотеку 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
здесь не определен?
если у кого-то будет такая же проблема, так что для меня setTimeout сделал трюк. Вот код:
mounted () {
setTimeout(function() {
// TradingView code
}, 1000)
}
Вам не хватает скрипта 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>