Weex開發中native如何主動發送事件到weex

項目中有個weex頁面需要選擇時間,在不清楚weex寫時間選擇器復不復雜的情況下,我覺得還是直接調用native的時間選擇控件,選擇完時間之后把時間傳遞到weex然后刷新頁面。
但問題也隨之而來:我怎樣在選擇完時間之后把時間傳給weex頁面并主動刷新呢?由于之前也涉及到native和weex頁面傳數據的問題,但都不是native端主動的,換句話說:之前都是先響應weex頁面中的動作然后去調用native中的方法,native再回調給weex。很明顯的是weex-->native-->weex的一個過程。那么可以用callback回調數據給weex頁面:

        var self = this;
         var eventModule = require('@weex-module/event'); 
         eventModule.xxx(function(ret) { 
             //do some work
             
           });   

但現在我需要的交互是native主動發送事件到weex,是native-->weex的過程(weex中需要有個全局事件來監聽native中的動作)。思考了良久不知道如何解決,問題在于weex怎么響應我native端的動作的,這個貌似是用callback解決不了的問題啊(其實后來我才知道可以通過在page的created事件時去調用native module,并把js的callback注冊給native,native存為變量,然后在需要調用時通過callback觸發js的處理函數,這樣也可以實現直接從native-->weex)。

QQ20161118-0.png

不支持全局事件????不會吧!!!
繼續找,在某條Issue的底部發現這么一段話:

QQ20161118-1.png

前幾天剛把sdk換成0.8的,ok了,看文檔吧:http://alibaba.github.io/weex/doc/modules/globalevent.html
完美搞定:
iOS native端

-(void)refreshWeexPage:(NSNotification *)notif{
    NSDictionary * dic = notif.userInfo;
   //傳一個dic到weex
    [weexInstance fireGlobalEvent:@"geolocation" params:dic];
}

weex端

 ready: function () {
          var self = this;
           var globalEvent = require('@weex-module/globalEvent');
           globalEvent.addEventListener("geolocation",function(e){

                //do work or refresh 

           });
        },

google搜了半天只有只言片語,還是跑github去找issue才發現解決辦法(百度根本沒有任何信息,吐槽一下百度),所以就目前來說,在weex開發中遇到問題最靠譜的還是去提issue或查找別人的issue看看別人的問題怎么解決的。
ok,結束,記錄一下,給遇到同樣問題的童鞋。有不懂得可以留言。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容