收藏
回答

如何从本地引用js文件

问题模块
API和组件

很多个页面都有相同的一个留言板,就想所有的页面用一个留言板,可是引用时候js不知道怎么引用了。

最后一次编辑于  2017-07-14
回答关注问题邀请回答
收藏

10 个回答

  • YJFn
    YJFn
    2017-07-14

    你具体的业务逻辑我也不清楚,你可以先写其中两个页面的留言板,看看都有什么公共部分和私有部分,再构思怎么抽取,传参这个事,你可以传很多个参数,或者干脆传page本身都行,在定义对外提供方法的时候,传进来的page就相当于你在page里用的this了,你要什么数据都行

    function liuyanban(page){

        page.setData({

            xxx

        })

    }

    调用:

    util.liuyanban(this)

    这是可以实现的,多想想


    2017-07-14
    赞同
    回复
  • 时光荏苒不忘初心
    时光荏苒不忘初心
    2017-07-14

    我这wxml。wxss 都是引用的,这样引用js用不了,数据读取不了

    2017-07-14
    赞同
    回复
  • YJFn
    YJFn
    2017-07-14

    这些data是私有数据,不是公共部分,不抽取

    在定义这个liuyanban方法的时候,私有数据作为参数就可以了

    比如你的不同页面提供的data都不同,那调用的时候,就要传当前页面私有的data

    function liuyanban(user){

        //你要的私有数据,拿出来用

       user

    }

    调用时:

    util.liuyanban(this.data.user)

    我只是写个大概思想,具体你要自己抽取实现

    2017-07-14
    赞同
    回复
  • 时光荏苒不忘初心
    时光荏苒不忘初心
    2017-07-14

    主要是data里边有数据,需要方法调用。不能写在page外啊

    2017-07-14
    赞同
    回复
  • YJFn
    YJFn
    2017-07-14

    在page之外,最好单独写一个js文件了,我没试过调用page里的方法,都是单独写在一个外部js文件的

    Page({

    data: {


            }

    })


    module.exports = {

    //可提供的方法

    liuyanban:liuyanban

    }


    function liuyanban(){

        xxxxxx

        xxxxxx

    }

    抽取公共部分很重要

    2017-07-14
    赞同
    回复
  • 时光荏苒不忘初心
    时光荏苒不忘初心
    2017-07-14

    你说的方法这里有,不过不起作用啊。http://www.cnblogs.com/huangenai/p/6385342.html

    2017-07-14
    赞同
    回复
  • 时光荏苒不忘初心
    时光荏苒不忘初心
    2017-07-14

    module.exports = {

    //可提供的方法

    xxx:zzz

    }

    这个写在page里边报错,写在外边page里的方法都不能调用。

    2017-07-14
    赞同
    回复
  • YJFn
    YJFn
    2017-07-14

    就是说你要把留言板抽取出来,封装成一个方法向外提供,名字你可以自己定的,不一定是util.js

    需要调用的页面(是js文件),最上面写var util = require('../../utils/util.js')

    真正调用的时候写:

    util.liuyanban()

    liuyanban这个方法就是你要抽取出来向外提供的

    这个方法具体是怎么样的,传不传参数,传什么参数,就看你怎么抽取了

    2017-07-14
    赞同
    回复
  • 时光荏苒不忘初心
    时光荏苒不忘初心
    2017-07-14

    必须是在util.js里边才可以吗? module.exports输出后,引用页面只需要var util = require('../../utils/util.js')这一句话就够了吗?

    2017-07-14
    赞同
    回复
  • YJFn
    YJFn
    2017-07-14

    是不是就像引用工具类一样?

    其实你抽取出相同部分应该也可以

    在多个页面的最上面加:

    var util = require('../../utils/util.js')


    然后util.js里必须有模块的出口:

    module.exports = {

    //可提供的方法

    xxx:zzz

    }


    2017-07-14
    赞同
    回复