美文网首页react & vue & angular
vue:js、c++、vue方法与数据交互

vue:js、c++、vue方法与数据交互

作者: 韩发发吖 | 来源:发表于2022-10-13 15:33 被阅读0次

    最近写了一个小需求,其中涉及到js调用vue中函数、js与c++相互调用、数据传输等问题,希望这里可以帮助到有需要的小伙伴儿,个人记录,仅供参考。

    js调用vue中methods内的方法

    在vue的钩子函数mounted中将需要在js中调用的函数赋值给window,暴露给js

     mounted() {
        let that = this;
        // 将Vue方法传到全局对象window中
        window.initDataAction = that.initDataAction
    },
    methods: {
        // 获取数据源
        initDataAction(data ) {
            console.log(data)
        }
    }
    

    在js中直接调用initDataAction函数,这里的函数中也可以传递对应数据。

    <script  type="text/javascript">
     let data = []
     // 调用获取数据源函数
     initDataAction(data)
    </script>
    

    js与c++间的通信

    js 请求 c++,触发c++吊起js中的函数并传递参数

       // 获取文档类型数据源
      initDataAction() {
            // js 请求 c++
          if (window.chrome.webview) {
              window.chrome.webview.postMessage(`getEmplates`);
          }  
    }
    

    c++ 触发js函数,并传递res参数

    (function(window, document, undefined) {
      "use strict";
      window.DomUtils = {
        // c++ 触发 res为返回数据
        getEmplates: function(res) {
          // 这里调用js中的函数
        }
    
    })(window, document)
    

    js与vue间数据传输

    js与vue间数据传输可以使用本地存储localStorage.setItem,不过这里要注意监听setItem值的变化及时刷新内存或是页面数据。另一种是js中调用vue暴露给window的函数传参,这种传参不需要特别监听数据变化,只要调用方法就可以实现新数据的传输。

    mounted() {
            let that = this;
            window.addEventListener("setItemEvent",function(e){
              //e.key : 是值发生变化的key
              //例如 e.key==="token";
              //e.newValue : 是可以对应的新值
              if(e.key==="token"){
                const templateData = e.newValue
              }
            })
     },
    

    相关文章

      网友评论

        本文标题:vue:js、c++、vue方法与数据交互

        本文链接:https://www.haomeiwen.com/subject/fjefzrtx.html