g 模版文中handler没有定义,求大神赐教。
来源:
spursyy
2016-06-24
this.weixin = message
yield handler.call(this, next)
wechat.reply.call(this)
ReferenceError: handler is not defined
at Object.<anonymous> (/Users/spursy/Desktop/nodejs/wechat/wechat/g2.js:77:10)
at next (native)
at Object.<anonymous> (/Users/spursy/Desktop/nodejs/wechat/node_modules/koa-compose/index.js:28:12)
at next (native)
at onFulfilled (/Users/spursy/Desktop/nodejs/wechat/node_modules/co/index.js:65:19)
at tryCatcher (/Users/spursy/Desktop/nodejs/wechat/node_modules/bluebird/js/release/util.js:16:23)
3回答
-
hander 没有从外部传进来吧
module.exports = function(opts, handler) { var wechat = new Wechat(opts) return function *(next) { var that = this var token = opts.token
022016-06-24 -
Scott
2016-06-24
把message作为属性,挂载到 this 这个上下文环境中,后面通过 this.weixin 可以访问到这个变量;调用 handler.call 是把 handler 这个函数中的 this 设置为当前这个 this 的上下文,从而 hander 也就是 reply 里面的 this ,就是此处的this,也就能在 reply 中拿到 this.weixin 了,也可以在里面把一些内容继续挂载到 this 上,比如 this.body,wechat.reply 也是同理,wechat 的 this 也设置为当前的this上下文,于是在wechat.prototype.reply 中的this即能访问到 this.weixin,也能访问到 this.body
00 -
spursyy
提问者
2016-06-24
Hi Scott 老师,
是由于handler 没有传进来, 我不明白最后一句是什么意思。
this.weixin = message
yield handler.call(this, next)
wechat.reply.call(this)
00
相似问题