weex-28-自定義AR組件

本節(jié)學(xué)習(xí)目標(biāo)

如何自定義一個組件

什么時候該自定義組件?

當(dāng)weex提供給我們的默認(rèn)組件滿足不了我們的需求的時候這個時候,就需要自定義組件了。

下面就以iOS 自定義組件為例演示一下 如何自定義一個AR 組件

使用方式如下

<template>
<div class="root">
    <ar class="model" name='boss.dae'> </ar>
</div>
</template>

你可以這這段代碼寫到你的vue文件中,使用app左上角的掃描功能進(jìn)行掃描測試

效果圖如下

Scenekit_17.gif

接下來是自定義組件(component)的詳細(xì)步驟

  • step-1

創(chuàng)建一個類繼承WXComponent

AC26A898-6617-4663-9B29-38FABB90C700.png
  • step-2

上述ar標(biāo)簽有一個屬性name 接下來看如何實(shí)現(xiàn)

在WXARComponent.m文件定義一個屬性

@property(nonatomic,strong)NSString *fileName; // 模型文件的名字

然后重寫下面的方法

-(instancetype)initWithRef:(NSString *)ref type:(NSString *)type styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes events:(NSArray *)events weexInstance:(WXSDKInstance *)weexInstance{
  if(self = [super initWithRef:ref type:type styles:styles attributes:attributes events:events weexInstance:weexInstance]){
    self.fileName = [WXConvert NSString:attributes[@"name"]];
  }
  return self;
}

解釋一下

[WXConvert NSString:attributes[@"name"]] WXConvert 定義了很多數(shù)據(jù)轉(zhuǎn)換方法

  • step-3
    我們知道,vue.js 的標(biāo)簽屬性是進(jìn)行了數(shù)據(jù)綁定了的,如果我們在js中修改了name的值,頁面會自動刷新,這個是怎么做到的呢?

當(dāng)js修改屬性的值之后,會自動調(diào)用下面的方法

-(void)updateAttributes:(NSDictionary *)attributes{
  // 處理 刷新邏輯
 }
  • step-4

如何給組件自定義綁定事件,如下

<ar class="model" :name='modelName' @update="update"> </ar>

接下來 我們看看原生中如何觸發(fā)這個事件

[self fireEvent:@"go" params:@{@"name":self.filename}];

上面是介紹了定義組件的基本用法,下面一步很重要的內(nèi)容

  • step-5

我們要讓weex框架識別這個我們自定義的組件,必須注冊這個組件,如下

WXSDKEngine.registerComponent("ar", with: WXARComponent.self);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容