Implementierung der Kommunikation mit mehreren Seitenparametern im WeChat-Applet

黄舟
Freigeben: 2017-05-07 11:32:42
Original
1830 Leute haben es durchsucht

Ich bin neu im WeChat-Miniprogramm und weiß nicht viel über die Syntax und die darin enthaltenen Attribute. Ich lerne derzeit intensiv. Der folgende Artikel führt Sie hauptsächlich in den mehrseitigen Parameter ein Die relevanten Informationen zur Kommunikation sind eine Zusammenfassung dessen, was ich kürzlich studiert habe. Freunde, die sie benötigen, können sich darauf beziehen.

Vorwort

WeChat-Miniprogramme werden immer beliebter und viele Unternehmen wandeln native Codes in WeChat-Miniprogrammcodes um . Während des Entwicklungsprozesses hat der Benutzer auf einigen Seiten, insbesondere beim Springen von der Listenseite zur Detailseite, den

-Status wx.navigateBack auf der Detailseite geändert, da die -Methode des WeChat-Applets die Rückgabe von Parametern nicht unterstützt. Nach der Rückkehr ist die Erfahrung nicht sehr gut, unabhängig davon, ob die Seite aktualisiert werden soll oder nicht. In Android verwenden wir im Allgemeinen die -Methode, um Parameter zurückzugeben, oder verwenden direkt das rxjavasetresult-Framework oder das Eventbus-Framework, um solche Probleme zu lösen.

Geschäftsanalyse

Diese Art von Anforderung bedeutet wahrscheinlich: Eine Seite gelangt in die B-Seite, B-Seite kehrt zurück und

besteht Der Wert wird A zugewiesen.

Road of Discovery

Zuerst wollte ich einen entspannten Ansatz verfolgen und den

wx.setStorage Cache von WeChat nutzen wird auf Seite B gespeichert, kehrt zu Seite A zurück und ruft in der onshow-Methode auf, um den Cache zu lesen und diese Funktion zu implementieren. Wenn Sie jedoch der Meinung sind, dass die Lösung zu opportunistisch ist, birgt sie auch viele versteckte Gefahren für zukünftige Wartungsarbeiten. wx.getStorageDann habe ich einen Weg gefunden, den vorherigen
im Internet zu finden, der diese Funktion auch erreichen kann. Ein Teil des Codes lautet wie folgt: page

var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面

//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
 mdata:1 
})
Nach dem Login kopieren
Nachdem ich sorgfältig darüber nachgedacht habe, ist der Code ist nicht sehr

sicher, da es möglicherweise mehrere Zugriffe auf Seite B gibt, was zu Fehlern auf der erhaltenen Seite führen kann.

Ich war mit meiner Weisheit am Ende, aber plötzlich dachte ich, dass das WeChat-Applet js unterstützt, und dann habe ich eine leichtgewichtige js-Bibliothek gefunden, und es ist der

Beobachtermodus, was der Typ ist, den ich haben möchte . . So, der Spaß beginnt

Einführung in onfire.js

onfire.js ist ein sehr einfaches

Event Verteilte Javascript-Bibliothek (nur 0,9 KB), einfach und praktisch.

kann verwendet werden für:

Üben

Die Gedanken sind wie folgt:

  • Seite Ein erster abonniert ein Ereignis und definiert die Verarbeitungsmethode.

  • Wenn Seite B zurückkehrt,

    senden Sie eine Nachricht.

  • Abmelden, wenn Seite A deinstalliert wird.


Ein Seitencode:

var onfire = require("../utils/onfire.js");
var that;
var eventObj = onfire.on('key', function () {
 //做具体的事
});

Page({
 data: {
 },
 onLoad: function(options) {
 // Do some initialize when page load.
 },
 onReady: function() {
 // Do something when page ready.
 },
 onUnload: function (e) {
 onfire.un('key');
 onfire.un(eventObj2);
 }
})
Nach dem Login kopieren
Rufen Sie direkt die

-Methode auf, um eine Nachricht mit dem Namen „key“ zu abonnieren, und Es gibt keine Übertragungsparameter. Wenn Sie Parameter übergeben müssen, fügen Sie Parameter einfach direkt in onfire.on hinzu, z. B. function. var eventObj = onfire.on('key', function (data)...

Hinweis: muss sich von den Nachrichten von in onUnload abmelden und die Bindung key aufheben. eventObj

Fügen Sie auf Seite B den Code an der Rückrufstelle hinzu

 onfire.fire('key');//key为上文中订阅的消息
 //有参数时
 onfire.fire('key','test');
Nach dem Login kopieren

Analysebibliothekscode

 function _bind(eventName, callback, is_one, context) {
 if (typeof eventName !== string_str || typeof callback !== function_str) {
  throw new Error('args: '+string_str+', '+function_str+'');
 }
 if (! hasOwnKey(onfireEvents, eventName)) {
  onfireEvents[eventName] = {};
 }
 onfireEvents[eventName][++cnt] = [callback, is_one, context];

 return [eventName, cnt];
 }
Nach dem Login kopieren
Aus dem Code geht hervor, dass die

-Methode tatsächlich aufgerufen wird, wenn die on-Methode abonniert wird. Diese Methode verwendet hauptsächlich ein _bind zweidimensionales Array Speichern Sie das abonnierte Objekt.

 function _fire_func(eventName, args) {
 if (hasOwnKey(onfireEvents, eventName)) {
  _each(onfireEvents[eventName], function(key, item) {
  item[0].apply(item[2], args); //执行订阅时的方法
  if (item[1]) delete onfireEvents[eventName][key]; // 当类型为只订阅一次时,通知后即移除自己。
  });
 }
 }
Nach dem Login kopieren
Die

-Methode zum Senden von Nachrichten ruft im Wesentlichen die fire-Methode auf, durchläuft die Abonnenten nach Namen _fire_func und benachrichtigt die Abonnenten dann. key

 function un(event) {
 var eventName, key, r = false, type = typeof event;
 if (type === string_str) {
  // 如果存在key值,则移除数组
  if (hasOwnKey(onfireEvents, event)) {
  delete onfireEvents[event];
  return true;
  }
  return false;
 }
 else if (type === 'object') {
  eventName = event[0];
  key = event[1];
  //如果找到这个对象则卸载
  if (hasOwnKey(onfireEvents, eventName) && hasOwnKey(onfireEvents[eventName], key)) {
  delete onfireEvents[eventName][key];
  return true;
  }
  //否则返回false
  return false;
 }
 else if (type === function_str) {
  //两层循环来判断是否是方法名
  _each(onfireEvents, function(key_1, item_1) {
  _each(item_1, function(key_2, item_2) {
   if (item_2[0] === event) {
   delete onfireEvents[key_1][key_2];
   r = true;
   }
  });
  });
  return r;
 }
 return true;
 }
Nach dem Login kopieren
Da die Deinstallation die Deinstallation nach

, Objekt und Methode unterstützt, müssen Sie zuerst den Typ bestimmen und dann die Bindung gemäß den jeweiligen Regeln aufheben. key

Zusammenfassung

Das obige ist der detaillierte Inhalt vonImplementierung der Kommunikation mit mehreren Seitenparametern im WeChat-Applet. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!