javascript - TradingView 未在 Vue 挂载钩子(Hook)中定义

标签 javascript vue.js vuejs2 vue-component tradingview-api

我不知道我是否应该在这里或其他地方提问,但我正在使用 tradingview 库,它对我有用,但不是我想要的。

根据文档,我将我的代码放入 vue 中的 index.html 文件中,在脚本标签下,并且我的 tradingview 可以正常工作,但是我想将这段代码放在 mounted,但出现此错误:

Error in mounted hook: "ReferenceError: TradingView is not defined"

这是 index.html 文件中有效的代码示例:

<script type="text/javascript" src="/charting_library/charting_library.min.js"></script>
<script type="text/javascript" src="https://d33t3vvu2t2yu5.cloudfront.net/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 脚本所以添加它如下:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/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/charting_library.min.js"></script>
<script type="text/javascript" src="https://d33t3vvu2t2yu5.cloudfront.net/tv.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/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>

关于javascript - TradingView 未在 Vue 挂载钩子(Hook)中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741721/

相关文章:

vue.js - Vue表2自定义标题名称

webpack - 即使在生产模式下构建,VueJS 也会显示 "development mode"消息

javascript - json中的空字符

javascript - Math.js 访问矩阵中的单个元素

javascript - ReactJS - 将对象键和值作为 props 传递给 div

javascript - 使用 Vue 数据绑定(bind)表达 switch 语句的正确方法

javascript - "TypeError: chart_js__WEBPACK_IMPORTED_MODULE_9__.default is not a constructor"

javascript - 使用方法将数据分配给vue数据变量动态

vue.js - 在 v-for 中选择/取消选择单个元素

javascript - 模拟两个圆圈相互弹跳