You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by GitBox <gi...@apache.org> on 2019/01/09 02:27:11 UTC

[GitHub] YorkShen closed pull request #2020: [iOS]support viewappear and viewdisappear event on eagle

YorkShen closed pull request #2020: [iOS]support viewappear and viewdisappear event on eagle
URL: https://github.com/apache/incubator-weex/pull/2020
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
index ca5fd83fa1..0c570995d6 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.h
@@ -197,7 +197,7 @@ namespace WeexCore
 
 + (void)callUpdateFinish:(NSString*)pageId;
 
-+ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args;
++ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args domChanges:(NSDictionary *)domChanges;
 
 + (void)registerModules:(NSDictionary *)modules;
 
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
index 1e2c331e33..7838a8e127 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXCoreBridge.mm
@@ -790,11 +790,12 @@ + (void)refreshDataRenderInstance:(NSString *)pageId data:(NSString *)data;
     node_manager->RefreshPage([pageId UTF8String] ?: "", [data UTF8String] ?: "");
 }
 
-+ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args
++ (void)fireEvent:(NSString *)pageId ref:(NSString *)ref event:(NSString *)event args:(NSDictionary *)args domChanges:(NSDictionary *)domChanges
 {
     NSString *params = [WXUtility JSONString:args];
+    NSString* nsDomChanges = [WXUtility JSONString:domChanges];
     auto vnode_manager = weex::core::data_render::VNodeRenderManager::GetInstance();
-    vnode_manager->FireEvent([pageId UTF8String] ? : "", [ref UTF8String] ? : "", [event UTF8String] ? : "", [params UTF8String] ? : "", "");
+    vnode_manager->FireEvent([pageId UTF8String] ? : "", [ref UTF8String] ? : "", [event UTF8String] ? : "", [params UTF8String] ? : "", [nsDomChanges UTF8String] ? : "");
 }
 
 + (void)registerModules:(NSDictionary *)modules {
diff --git a/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m b/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
index c98ba3810c..a75f51f4ea 100644
--- a/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
+++ b/ios/sdk/WeexSDK/Sources/Events/WXComponent+Events.m
@@ -166,14 +166,7 @@ - (void)fireEvent:(NSString *)eventName params:(NSDictionary *)params domChanges
     
     NSArray *handlerArguments = [self _paramsForEvent:eventName];
     NSString *ref = _templateComponent ? _templateComponent.ref  : self.ref;
-    if (self.weexInstance.dataRender) {
-        WXPerformBlockOnComponentThread(^{
-            [WXCoreBridge fireEvent:self.weexInstance.instanceId ref:ref event:eventName args:dict];
-        });
-    }
-    else {
-        [[WXSDKManager bridgeMgr] fireEvent:self.weexInstance.instanceId ref:ref type:eventName params:dict domChanges:domChanges handlerArguments:handlerArguments];
-    }
+    [[WXSDKManager bridgeMgr] fireEvent:self.weexInstance.instanceId ref:ref type:eventName params:dict domChanges:domChanges handlerArguments:handlerArguments];
 }
 
 - (NSString *)recursiveFindTemplateIdWithComponent:(WXComponent *)component
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
index 0161dd5f96..afd1f3ded2 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
@@ -31,6 +31,8 @@
 #import "WXMonitor.h"
 #import "WXSDKInstance_performance.h"
 #import "WXThreadSafeMutableArray.h"
+#import "WXComponentManager.h"
+#import "WXCoreBridge.h"
 
 @interface WXBridgeManager ()
 
@@ -411,6 +413,14 @@ - (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)ty
 
 - (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)type params:(NSDictionary *)params domChanges:(NSDictionary *)domChanges handlerArguments:(NSArray *)handlerArguments
 {
+    WXSDKInstance *instance = [WXSDKManager instanceForID:instanceId];
+    if (instance.dataRender) {
+        WXPerformBlockOnComponentThread(^{
+            [WXCoreBridge fireEvent:instanceId ref:ref event:type args:params?:@{} domChanges:domChanges?:@{}];
+        });
+        return;
+    }
+
     if (!type || !ref) {
         WXLogError(@"Event type and component ref should not be nil");
         return;
@@ -422,7 +432,6 @@ - (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)ty
         [newArgs addObject:@{@"params":handlerArguments}];
         args = newArgs;
     }
-    WXSDKInstance *instance = [WXSDKManager instanceForID:instanceId];
     
     if(instance && !instance.isJSCreateFinish)
     {


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services