Hi_Jacky123 2022-10-06 17:18 采纳率: 77.8%
浏览 23
已结题

小程序全局数据共享,如何调用共享的字段和方法?

在刚开始学习全局数据共享时,就有一个疑问,今天一实践果然还是有问题:在store.js中定义了字段和方法,在页面中使用时不识别,字段是“not defined”,方法是“not a function”。
import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'

Page({

    data: {

    },
    onLoad: function (options) {
        this.storeBindings = createStoreBindings(this, {
        store,
        fields: ['num1', 'num2', 'sum'],
        actions: ['updateNum1']
        })
    },

    btnHandler1(e) {

        this.updateNum1(e.target.dataset.step)
    },

    onUnload: function () {
        this.storeBindings.detroyStoreBindings()
    }
})

就比如以上的代码,最常见的例子。在页面onLoad()中的 this.storeBindings中,引用了actions: ['updateNum1'],但是这个updateNum1并没有声明啊,在下面的 btnHandler1(e)怎么能直接引用呢?反正我的不出意外报错“updateNum1 is not a function”。不仅在onLoad()之外我的报错,在onLoad() 之内也报错,因为它在createStoreBindings(this, {}中的呀。

不仅如此,字段也是一样,fields: ['num1', 'num2', 'sum']这三个字段全部报错:“…is not defined”

谁知道如何解决?
  • 写回答

3条回答 默认 最新

  • Hi_Jacky123 2022-10-06 19:34
    关注

    哎呀不好意识,占用大家时间了,问题已经搞明白了。
    1:我自己的代码中,把actions: ['updateNum1']写成了action,少了一个“s”,导致.js中使用时报错:updateNum1 is not a function。
    2:对fields: ['num1', 'num2', 'sum']中的对象,赋值后在wxml页面中使用{{num1}}正常使用。在.js中如何使用呢,我想了个办法,在store中再写一个actions,把值返回来:return this.num1,然后在.js中调用该函数,就拿到了num1的值。
    特此留言。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日

悬赏问题

  • ¥18 深度学习tensorflow1,ssdv1,coco数据集训练一个模型
  • ¥100 关于注册表摄像头和麦克风的问题
  • ¥30 代码本地运行正常,但是TOMCAT部署时闪退
  • ¥15 关于#python#的问题
  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方