请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

g 模版文中handler没有定义,求大神赐教。

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回答

Scott 2016-06-24 08:58:42

hander 没有从外部传进来吧


module.exports = function(opts, handler) {
  var wechat = new Wechat(opts)
  return function *(next) {
    var that = this
    var token = opts.token


0 回复 有任何疑惑可以回复我~
  • 提问者 spursyy #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2016-06-24 14:29:18
  • 提问者 spursyy #2
    Hi Scott 老师,
          是由于handler 没有传进来,  我不明白最后一句是什么意思。
    
    this.weixin = message
    yield handler.call(this, next)
    wechat.reply.call(this)
    回复 有任何疑惑可以回复我~ 2016-06-24 15:07:52
Scott 2016-06-24 21:47:33

把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

0 回复 有任何疑惑可以回复我~
提问者 spursyy 2016-06-24 14:31:32

Hi Scott 老师,

      是由于handler 没有传进来,  我不明白最后一句是什么意思。


this.weixin = message

yield handler.call(this, next)

wechat.reply.call(this)


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信