国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

weex的web組件,當(dāng)src為變量時(shí)在Android端無(wú)法加載

瀏覽:97日期:2024-02-20 11:42:26

問(wèn)題描述

我在使用weex的web時(shí),把src設(shè)為一個(gè)變量,在Android端,webView無(wú)法加載成功。we代碼如下:

<template><tm-navpage title=’{{title}}’ listenning_rigth_button_click=true> <web id=’toomao-web’ src=’{{src}}’ style=’width: 750; height: 1206;’ onpagefinish=’pagefinish’></web> <tm-loading if=’loading’></tm-loading></tm-navpage> </template><script> data: {src: ’’, // web加載鏈接url: ’’, // url參數(shù)userInfo: ’’,title: ’’,loading: true,canGoBack: false, // 記錄當(dāng)前webView的加載信息 }, created() {this.url = decodeURIComponent(getUrlParams(this, ’url’)); }</script>

Android端的web實(shí)現(xiàn)主要如下:

@Deprecated public WXWeb(WXSDKInstance instance, WXDomObject dom, WXVContainer parent, String instanceId, boolean isLazy) {this(instance,dom,parent,isLazy); } public WXWeb(WXSDKInstance instance, WXDomObject dom, WXVContainer parent, boolean isLazy) {super(instance, dom, parent, isLazy);createWebView(); } protected void createWebView(){mWebView = new WXWebView(getContext()); } @Override protected View initComponentHostView(@NonNull Context context) {mWebView.setOnErrorListener(new IWebView.OnErrorListener() { @Override public void onError(String type, Object message) {fireEvent(type, message); }});mWebView.setOnPageListener(new IWebView.OnPageListener() { @Override public void onReceivedTitle(String title) {if (getDomObject().getEvents().contains(Constants.Event.RECEIVEDTITLE)) { Map<String, Object> params = new HashMap<>(); params.put('title', title); fireEvent(Constants.Event.RECEIVEDTITLE, params);} } @Override public void onPageStart(String url) {if ( getDomObject().getEvents().contains(Constants.Event.PAGESTART)) { Map<String, Object> params = new HashMap<>(); params.put('url', url); fireEvent(Constants.Event.PAGESTART, params);} } @Override public void onPageFinish(String url, boolean canGoBack, boolean canGoForward) {if ( getDomObject().getEvents().contains(Constants.Event.PAGEFINISH)) { Map<String, Object> params = new HashMap<>(); params.put('url', url); params.put('canGoBack', canGoBack); params.put('canGoForward', canGoForward); fireEvent(Constants.Event.PAGEFINISH, params);} }});return mWebView.getView(); } @Override public void destroy() {super.destroy();getWebView().destroy(); } @Override protected boolean setProperty(String key, Object param) {switch (key) { case Constants.Name.SHOW_LOADING:Boolean result = WXUtils.getBoolean(param,null);if (result != null) setShowLoading(result);return true; case Constants.Name.SRC:String src = WXUtils.getString(param,null);if (src != null) setUrl(src);return true;}return super.setProperty(key,param); } @WXComponentProp(name = Constants.Name.SHOW_LOADING) public void setShowLoading(boolean showLoading) {getWebView().setShowLoading(showLoading); } @WXComponentProp(name = Constants.Name.SRC) public void setUrl(String url) {if (TextUtils.isEmpty(url) || getHostView() == null) { return;}if (!TextUtils.isEmpty(url)) { loadUrl(getInstance().rewriteUri(Uri.parse(url), URIAdapter.WEB).toString());} } public void setAction(String action) {if (!TextUtils.isEmpty(action)) { if (action.equals(GO_BACK)) {goBack(); } else if (action.equals(GO_FORWARD)) {goForward(); } else if (action.equals(RELOAD)) {reload(); }} }private void fireEvent(String type, Object message) {if (getDomObject().getEvents().contains(Constants.Event.ERROR)) { Map<String, Object> params = new HashMap<>(); params.put('type', type); params.put('errorMsg', message); fireEvent(Constants.Event.ERROR, params);} } private void loadUrl(String url) {getWebView().loadUrl(url); } private void reload() {getWebView().reload(); } private void goForward() {getWebView().goForward(); } private void goBack() {getWebView().goBack(); } private IWebView getWebView() {return mWebView; }問(wèn)題

在調(diào)試的過(guò)程中,發(fā)現(xiàn)setProperty方法只會(huì)走一次,就是在設(shè)置的時(shí)候, 當(dāng)src從新賦值之后,web并不會(huì)去刷新url從新加載。求如何實(shí)現(xiàn)當(dāng)src變化 時(shí),web可以去從新加載,

嘗試過(guò)refreshData方法,發(fā)現(xiàn)也不會(huì)調(diào)用。

@Override public void refreshData(WXComponent component) {super.refreshData(component);component.getDomObject().getAttrs(); }

問(wèn)題解答

回答1:

我突然怎么覺得是你的寫法問(wèn)題。。。src=’{{src}}’ 改為 :src=’src’

回答2:

src屬性接受一個(gè)字符串,當(dāng)你需要用變量的時(shí)候,對(duì)應(yīng)vue的語(yǔ)法是v-bindsrc=’{{src}}’實(shí)際上是傳了一個(gè){{src}}的字符串進(jìn)去,肯定解析不了所以要用:src=’variable’而且v-bind不止接受變量,還可以寫表達(dá)式

我看了一下你的代碼你那個(gè)onPageFinish如果是事件的話應(yīng)該是要綁定v-on的,也就是應(yīng)該寫成@onPageFinish

標(biāo)簽: web
主站蜘蛛池模板: 欧美在线一区二区三区欧美 | 国产99精品免费视频看6 | 草草视频在线播放 | 男人天堂avav| 国模偷拍在线观看免费视频 | 一级床上爽高清播放 | 国产一区二区亚洲精品天堂 | 久久只有精品视频 | 国产美女一区精品福利视频 | 给我一个可以看片的www日本 | 在线看欧美日韩中文字幕 | 成人做爰www | 亚洲最大情网站在线观看 | www.日本高清 | 国产欧美精品区一区二区三区 | 国产精品久久久久精 | 欧美色欧| 国产91精品高清一区二区三区 | 国产亚洲一区二区三区不卡 | 欧美亚洲影院 | 国产在线观看免费 | 国产免费久久精品99 | 国产不卡精品一区二区三区 | 欧美巨大精品videos | 免费在线精品视频 | 亚洲精品一区二区三区福利 | 亚洲欧美另类视频 | 国产大臿蕉香蕉大视频 | 日韩a毛片 | 欧美久久久久欧美一区 | 国产好片无限资源 | 国产欧美视频在线观看 | 三级c欧美做人爱视频 | 看真人视频一级毛片 | 亚洲高清国产一区二区三区 | 亚洲国产高清一区二区三区 | 亚洲精品美女 | 国产亚洲精品一区二区三区 | 在线亚洲黄色 | 亚洲人的天堂男人爽爽爽 | 欧美一区二区三区国产精品 |