Eine Zusammenfassung der Probleme, die bei der Entwicklung von WeChat-Miniprogrammen auftreten

高洛峰
Freigeben: 2017-03-11 16:08:15
Original
1556 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich relevante Informationen zur Zusammenfassung der bei der Entwicklung von WeChat-Miniprogrammen aufgetretenen Probleme vorgestellt. Freunde in Not können darauf zurückgreifen

Zusammenfassung der bei der Entwicklung von WeChat-Miniprogrammen aufgetretenen Probleme

1. Da die wx.request()-Methode des Miniprogramms asynchron ist, kann app.js nach der Ausführung von Ajax nicht geladen werden, wenn jede Seite die globalen Daten von app.js lädt Befehl. Beispiel:


//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
  }
})
Nach dem Login kopieren

Lösung, verwenden Sie die asynchrone Promise-Funktion:


//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
    });
  }
})
Nach dem Login kopieren

2. Nur Bild Die ursprüngliche Breite und Höhe können erhalten werden, die vorhandene Breite und Höhe kann jedoch nicht erhalten werden. Das Bild-Tag kapselt jedoch das Modusattribut, das je nach Bedarf festgelegt werden kann.

3. Am unteren Rand jedes Bild-Tags befindet sich ein transparenter Raum, kein Abstand, kein Rand. Beim Erstellen einer Maskenebene vor dem Bild kann es zu Problemen kommen.

4. Netzwerkanforderungen müssen https bereitstellen

5. Bei der Konfiguration von tabBar muss der pagePath-Parameter im Listenparameter mindestens den ersten Pfad im Seitenarray in app.json enthalten Dies führt dazu, dass tabBar nicht angezeigt wird.

6. TabBar kann beim Springen keine Parameter annehmen:


//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的数据。
  
Nach dem Login kopieren

7. Von der wx.request()-Methode angeforderte URL muss mit https beginnen

8. Wenn wx.request() die Post-Methode zum Anfordern verwendet, müssen Sie auch einen Header hinzufügen. Der Header[Inhaltstyp]-Wert ist application/x-www-form-. urlcodiert. Beispiel:


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)
  }
});
Nach dem Login kopieren

9. Das Applet kann keine HTML-Tags laden und die Datenwiedergabe kann keine WXML-Tags rendern ( usw.) . Sie können wxParse.js verwenden, um verwandte Daten zu verarbeiten.

10. Android kann die von wx.request() angeforderten Daten nicht rendern.

Überprüfen Sie, ob die zurückgegebenen Daten einen Stücklistenkopf (3 Leerzeichen) haben. Bei der wx.request-Analyse von Android wird der BOM-Header nicht übersprungen, sodass die Daten als Zeichenfolge und nicht als Objekt oder Array zurückgegeben werden.

Beispiel:

Die zurückgegebenen Daten sind: (3 Leerzeichen){a:1, b:2}

Die analysierten Daten sind: '{a: 1 , b:2}' (Zeichenfolge), nicht {a:1, b:2} (Objekt)

Da es sich nicht um ein Objekt handelt, funktionieren Vorlagenrendering und dergleichen nicht ordnungsgemäß. Die Lösung besteht darin, den Stücklistenkopf zu entfernen, bevor Daten im Hintergrund zurückgegeben werden. Wenn der BOM-Header nicht im Hintergrund entfernt wird, kann er am Frontend entfernt werden. Wenn der Datentyp von wx.request jedoch auf „Standard“ gesetzt ist, wird er standardmäßig auf „json“ gesetzt und automatisch analysiert, sodass der BOM-Header nicht entfernt werden kann .

Lösung:


wx.request({
  url: url,
  method: 'GET',
  dataType: 'txt',
  success: function(e){
    let json = e.data.trim();
    let arr = JSON.parse(json);
  }
});
Nach dem Login kopieren

Ändern Sie den Datentyp in ein anderes Format als JSON, um zu verhindern, dass das Applet die JSON-Zeichenfolge automatisch analysiert Verwenden Sie dann die Methode trim(), um Leerzeichen aus den zurückgegebenen Daten zu entfernen und schließlich die JSON-Zeichenfolge zu analysieren.

11. Das Auslassen mehrerer Zeilen (-webkit-line-clamp) ist beim Debuggen normal, beim Veröffentlichen jedoch ungültig.

Lösung: Wenn Sie nicht noch einmal überprüfen möchten, lassen Sie einfach den Hintergrund abschneiden

Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen, vielen Dank für Ihre Unterstützung dieser Website !

Das obige ist der detaillierte Inhalt vonEine Zusammenfassung der Probleme, die bei der Entwicklung von WeChat-Miniprogrammen auftreten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage