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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改