收藏
回答

app.js中定义全局data

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 需求 客户端 wx51f255b0ae5a61ec 6.5.8

能不能在app.js中设置全局的data变量,然后所有的视图页面中都可以直接渲染使用。不用每个页面都去app.

globalData里取一次。

回答关注问题邀请回答
收藏

6 个回答

  • 禾店短剧系统
    禾店短剧系统
    2021-05-28

    // 在app.js文件中


    this.globalData = {

          identity: 2,

    }


    // 在需要使用全局变量的页面的js文件中


    const app = getApp()

    ********

    data: {

        identity: app.globalData.identity,

    },

    *******

    /**

     * 生命周期函数--监听页面加载

    */

     onLoad: function (options) {

        this.identity = app.globalData.identity

     }


    2021-05-28
    有用 1
    回复
  • 白玉雄
    白玉雄
    2018-11-15

    这样对做国际化还有一个好处:

    比如说:用户修改语言,只需要app.js里把setdata调用一下,所有wxml里的语言都自动换了。


    而按照现在小程序里的解决方案:

    1、语言在app.js里初始化

    2、wxml的语言需要在page的onshow里重复从app.js里拉过来,因为放在onload里的话,会有一个BUG,复现流程:

    a) 用户访问页面xxx.page,onload被调用

    b) 用户修改了语言,app.js中语言文件重新加载

    c)用户再回到页面xxx.page,因为onload已经调用过了,所以页面的语言不会从app.js重新拉


    2018-11-15
    有用
    回复
  • ==
    ==
    2018-11-15

    waht??有啥区别??

    2018-11-15
    有用
    回复
  • 卢霄霄
    卢霄霄
    2018-11-15

    就是想省一句

    this.setData({getApp().globalData})吗

    2018-11-15
    有用
    回复 8
    • ==
      ==
      2018-11-15

      你这叫凑热闹,晓得不,楼下已经很多怼楼主的。

      2018-11-15
      回复
    • 白玉雄
      白玉雄
      2018-11-15

      嗯,就是为了省一句

      2018-11-15
      回复
    • 白玉雄
      白玉雄
      2018-11-15

      比如做国际化的时候,语言文件在app.js里加载,然后底下所有的子页面,都需要写这么一句,比较费事

      2018-11-15
      回复
    • 卢霄霄
      卢霄霄
      2018-11-15回复白玉雄

      真是有追求的啊。。不过我觉得官方不会处理这个情况。。

      如果要优化,可以自己封装 Page方法。但是。。那样就更费事了。。哈哈哈哈

      2018-11-15
      回复
    • 白玉雄
      白玉雄
      2018-11-15回复卢霄霄

      这样还有一个好处:

      比如说:用户修改语言,只需要app.js里把setdata调用一下,所有wxml里的语言都自动换了。


      而按照现在小程序里的解决方案:

      1、语言在app.js里初始化

      2、wxml的语言需要在page的onshow里重复从app.js里拉过来,因为放在onload里的话,会有一个BUG,复现流程:

      a) 用户加载的页面xxx.page,onload被调用

      b) 用户修改了语言,app.js中语言文件重新加载

      c)用户再回到页面xxx.page,因为onload已经调用过了,所以页面的语言不会从app.js重新拉

      2018-11-15
      回复
    查看更多(3)
  • 2018-11-15

    你的意思是在全局定义个data,然后用app.data去调?那你这跟去globalData里去取有什么区别?

    2018-11-15
    有用
    回复
  • จุ๊บ
    จุ๊บ
    2018-11-15

    有啥区别吗?globalData 和 data 只是变量名不一样

    这样写了,获取方式还是和写在globalData 里面是一样的啊

    2018-11-15
    有用
    回复 2
    • 白玉雄
      白玉雄
      2018-11-15

      我说是的在wxml里直接调用app.js里的data。

      在wxml里可以直接 :{{arr}}

      2018-11-15
      回复
    • จุ๊บ
      จุ๊บ
      2018-11-15回复白玉雄

      那你就直接在对应的js里面获取,然后写在对应js的data里面,就不用setData了。可以在wxml直接用

      2018-11-15
      回复
登录 后发表内容