위챗 소프로그램 개발 중 문제 총결

위챗 소프로그램 개발 중 문제 총결
1. 작은 프로그램 때문에 wx.request () 방법은 비동기적입니다. 앱에서.js가 aax를 실행하면 페이지별로 app를 불러옵니다.js의 전역 데이터를 불러올 수 없습니다.예:

//app.js
App({
  ajax:function(){
    let that = this;
    wx.request({
      url: 'https://a.com/url.php',
      method: 'GET',
      success: function(e){
        that.data = 123;
      }
    })
  };
})
//content.js
let app = getApp()
Page({
  getData: function(){;
    app.ajax();
    console.log(app.data); //undefined
  }
})
해결 방법, Promise 비동기식 함수 사용:

//app.js
App({
  ajax:function(){
    let that = this;
    let promise = new Promise(function(resolve, reject){
      wx.request({
        url: 'https://a.com/url.php',
        method: 'GET',
        success: function(e){
          that.data = 123;
          resolve();
        }
      })
    });
  };
})
//content.js
let app = getApp()
Page({
  getData: function(){;
    app.ajax().then(()=>{
      console.log(app.data); //123
    });
  }
})
2. 그림은 원본 너비만 얻을 수 있고 기존 너비는 얻을 수 없습니다.그러나 이미지 라벨은mode 속성을 봉인하여 수요에 따라 스스로 설정할 수 있습니다.
3. 이미지 탭 밑에 투명한 간격이 있습니다. 패딩이 아니라margin이 아닙니다.그림 앞에서 커버층을 만들 때 구덩이가 될 수 있다.
4. 네트워크 요청은 https를 배치해야 한다
5. tabBar를 설정할 때 list 매개 변수의 pagePath 매개 변수는 최소한 app를 포함해야 합니다.json의 페이지 그룹의 첫 번째 경로입니다. 그렇지 않으면tabBar가 표시되지 않습니다.
6.tabBar 점프 시 매개변수를 사용할 수 없습니다. 해결 방법:

//search.js
var app = getApp();
Page({
  confirm: function(e){
    // , 
    let val = e.detail.value;
    app.searchWord = val;
    this.jump();
  },
  jump: function(){
    // tabBar
    wx.switchTab({
      url: '../index/index',
    });
  },
});
 
//index.js
var app = getApp();
Page({
  onShow: function(e){
    // 
    let val = app.searchWord;
  }
});
// app.js 。 onShow app.js 。
  
7. 애플릿 wx.request () 방법으로 요청한 URL은 https로 시작해야 합니다
8.wx.request ()post 방법으로 요청할 때 헤더를 추가해야 합니다. 헤더 [content-type] 값은 응용 프로그램/x-www-form-urlencoded입니다.예:

wx.request({
  url: 'https://a.com/url.php',
  data: {message: 123},
  method: 'POST',
  header: {
    'content-type': 'application/x-www-form-urlencoded'
  },
  success: function(e){
    console.log(e)
  }
});
 9.작은 프로그램은 html 라벨을 불러올 수 없으며, 데이터 렌더링도 wxml 라벨( 등)을 렌더링할 수 없습니다. wxParse를 사용할 수 있습니다.js는 관련 데이터를 처리합니다.
10. 안드로이드는 wx를 렌더링할 수 없습니다.request () 요청한 데이터입니다.
반환된 데이터에 BOM 헤더가 있는지 확인합니다.안드로이드의 wx.request 해석은 BOM 헤더를 건너뛰지 않습니다. 데이터가 대상이나 그룹이 아닌 문자열로 되돌아옵니다.
예:
반환된 데이터는: (3자 공백) {a:1, b:2}
해석된 데이터는'{a:1, b:2}'(문자열)이지 {a:1, b:2}(대상)가 아닙니다.
객체가 아니기 때문에 템플릿 렌더링 등은 제대로 수행되지 않습니다.해결 방법, 백그라운드에서 데이터를 되돌리기 전에 BOM 헤더를 제거하면 됩니다.만약 백그라운드가 BOM 헤드에 가지 않는다면, 전방에서 제거할 수 있지만, wx.request 만약 dataType이 부족하면 기본적으로 json이고 자동으로 해석되어 BOM 헤더를 제거할 수 없습니다.
솔루션:

wx.request({
  url: url,
  method: 'GET',
  dataType: 'txt',
  success: function(e){
    let json = e.data.trim();
    let arr = JSON.parse(json);
  }
});
데이터 type은 json 이외의 형식으로 변경합니다. 프로그램이 자동으로 json 문자열을 해석하지 않도록 하고, 되돌아오는 데이터에 대해trim() 방법으로 공백을 없애고, 마지막으로 json 문자열을 해석하면 됩니다.
11. 디버깅 시 여러 줄 생략 (-webkit-line-clamp) 이 정상이며, 발표 시 여러 줄 생략은 무효입니다.
해결 방안: 재검토하지 않으려면 백그라운드를 차단하면 된다
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기