其他分享
首页 > 其他分享> > 如何在快应用中定义一个全局对象

如何在快应用中定义一个全局对象

作者:互联网

背景

开发者在开发某个功能时,经常会遇到某个对象,某个接口在代码多个地方有被使用到,如果每个地方都写一份,一旦其中一个值发生变化了,那么调用的地方都需要修改。而且很容易遗忘某个地方,导致产品存在bug。如何在快应用中定义一个全局对象呢?只需要修改这个全局对象,其他地方都可以同步修改呢?

解决方案

可在manifest文件的data中定义,然后在各个ux页面通过this.$app.$data.xxx形式去调用。 您也可以在app.ux中定义全局对象,并在各个ux页面通过this.$app.$def.xxx形式去调用。下面我们分别介绍这2个方案的实现。

方案1:在manifest.json中配置

相关代码如下:

manifest.json文件配置

"config": {    "data": {      "globalData": "GlobalData"    }  },

hello.ux 页面

<template>  <!-- Only one root node is allowed in template. -->  <div class="container">    <input type="button" value="切换" onclick="switchValue" />    <text>这是一个全局变量{{value}}</text>  </div></template><style>  .container {    flex-direction: column;    justify-content: center;    align-items: center;  }</style><script>  module.exports = {    data: {      componentData: {},      value: '',      display: true    },    onInit() {      this.$page.setTitleBar({        text: 'menu',        textColor: '#ffffff',        backgroundColor: '#007DFF',        backgroundOpacity: 0.5,        menu: true      });    },    onShow(options) {      '// Do something when show.'      this.value = this.$app.$data.globalData      console.log("message:", this.value);    },    switchValue () {      this.$app.$data.globalData = "test"      this.value = this.$app.$data.globalData      console.log("message:", this.value);    },  }</scri 贵州党政培训 www.gdganxun.cn pt>

运行效果:

日志如下:

3.png

方案2:app.ux配置

app.ux代码:

<script>  module.exports = {    onCreate() {      console.info('Application onCreate');    },    onDestroy() {      console.info('Application onDestroy');    },    dataApp: {      globalData: "GlobalData in app.ux"    }  }</script>

hello.ux代码:

<template>  <!-- Only one root node is allowed in template. -->  <div class="container">    <input type="button" value="切换" onclick="switchValue" />    <text>这是一个全局变量{{value}}</text>  </div></template><style>  .container {    flex-direction: column;    justify-content: center;    align-items: center;  }</style><script>  module.exports = {    data: {      componentData: {},      value: '',      display: true    },    onInit() {      this.$page.setTitleBar({        text: 'menu',        textColor: '#ffffff',        backgroundColor: '#007DFF',        backgroundOpacity: 0.5,        menu: true      });    },    onShow(options) {      '// Do something when show.'      this.value = this.$app.$def.dataApp.globalData      console.log("message:", this.value);    },    switchValue() {      this.$app.$def.dataApp.globalData = "test"      this.value = this.$app.$def.dataApp.globalData      console.log("message1111111:", this.value);    },  }</script>

运行效果:

日志如下:

6.png

欲了解更多详情,请参阅:

快应用manifest.json文件

https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-manifest

快应用script脚本:

https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-script#h2-1575380435413

 

标签:console,定义,对象,app,value,globalData,全局,data,ux
来源: https://blog.csdn.net/cmdos/article/details/123632766