收藏
回答

将template里面的方法传给page,在真机上出错了

问题模块
API和组件

在index里面引入一个template,然后将模板里面的方法注入到index上,在开发者工具中正常运行,发布到真机测试时提示下列错误


代码如下:

let _infoEvent = {
    '__info__descClick' : function(e){
        //当前点击的序号
        let sqnm = e.target.dataset.sqnm;
        if(undefined == sqnm) return;
         
        let descText = this.data.customerDescArr[sqnm];
        let phoneList = this.data.phoneList[this.data.callSqnm];
        phoneList.desc = phoneList.desc || [];
 
        let descChoiceList = this.data.configInfo.descChoiceList;
        let index = phoneList.desc.indexOf(descText);
        if(-1 == index) {
            phoneList.desc.push(descText)
            descChoiceList[sqnm].type = 'cancel';
        }
        else {
            phoneList.desc.splice(index, 1);
            descChoiceList[sqnm].type = 'success_circle';
        }
 
        this.setData({
            phoneList :  this.data.phoneList,
            'configInfo.desc' : phoneList.desc,
            'configInfo.descChoiceList' : descChoiceList
        })
    },
    '__info__stateClick' : function(e){
        //当前点击的序号
        let sqnm = e.target.dataset.sqnm;
        if(undefined == sqnm) return;
 
        let phoneList = this.data.phoneList[this.data.callSqnm];
        let stateText = this.data.customerStateArr[sqnm];
 
        let index = phoneList.state.indexOf(stateText);
        let state = this.data.configInfo.state;
        if( -1 == index ){
            phoneList.state.push(stateText);
            state[sqnm].flag = 'yes';
        }
        else {
            phoneList.state.splice(index, 1);
            state[sqnm].flag = 'no';
        }
 
        this.setData({
             phoneList :  this.data.phoneList,
            'configInfo.state' : state
        })
    }
}
 
function InfoPannel(){
     // 拿到当前页面对象
  let pages = getCurrentPages()
  let curPage = pages[pages.length - 1]
 
 // navPannel =  new NavPannel(curPage);
 
  // 把组件的事件“合并到”页面对象上
  Object.assign(curPage, _infoEvent)
 
  this.__page = curPage
 
 
 // curPage.navPannel = this
 
  // 把组件的数据“注入”到页面的data对象中
 // curPage.setData(_compData);
 
  return this
}
 
module.exports = {
  InfoPannel
}


求大神解救呀

最后一次编辑于  2017-02-26  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • Special
    Special
    2017-02-26

    iOS 真机上还不支持 Object.assign(ES6 新 API)导致的,这个问题我们很快就会解决,当前可以先手动打个 polyfill


    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill

    2017-02-26
    赞同
    回复