亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

AngularJs定制樣式插入到ueditor中的問題小結

2019-11-20 09:22:01
字體:
來源:轉載
供稿:網友

總結一下自己給編輯器定制樣式的過程中所遇到的問題,主要是編輯器的二次開發接口,以及用angular定制樣式,問題不少,終于在**的幫助下,完成了,還剩下老版本和新版本的交互沒有弄好,不過不難。下面分別講解問題。

ueditor的開發

你可以在官網上下載任意版本,進行使用即可:http://ueditor.baidu.com/website/download.html 下載后按照官網上的配置就可以使用。文檔地址:http://fex.baidu.com/ueditor/ 關于ueditor二次開發問題還真不少,這里列出來。

1.ueditor自動將div標簽過濾變為p標簽

在定制樣式過程中,發現div全部被過濾未p標簽,網上找了好些資料,但都沒用,后來看到有大神寫到,不同版本的ueditor配置不一樣,這里寫下我的解決辦法是:打開ueditor.config.js配置文件,添加下面的代碼:

, allowDivTransToP: false 

注意是在window.UEDIROE_CONFIG里面手動添加!另外也有人遇到類似的情況解決辦法,這里可以參考:http://www.cnblogs.com/Olive116/p/3464495.html

2.如何把定制的樣式插入到編輯器里面呢?

在編輯器里面提供了接口,我們來看看。

function insertHtml() {var value = prompt('插入html代碼', '');UE.getEditor('editor').execCommand('insertHtml', value)} 

那么如何在我們自己的項目中使用該接口呢?首先要實列化編輯器,通常是直接使用UE.getEditor()來得到實例。

//使用工廠方法getEditor創建和引用編輯器實例,如果在某個閉包下引用該編輯器,直接調用UE.getEditor('editor')就能拿到相關的實例使用之前我們需要先把該編輯器引入進來,才能調用其方法。

<script src="libs/ueditor/ueditor.config.js"></script><script src="libs/ueditor/ueditor.all.min.js"></script>

在我們的angular的項目中創建編輯器實例如下,編輯器提供ready的方法來實例化:

// 創建編輯器的實列$scope.ready = function (ueditor) {window.editor = ueditor;}; 

OK,我們現在就可以使用editor這個編輯器實例了。接下來看看ng定制的樣式。

ng定制的樣式

先來看下,我們用手寫的手風琴菜單樣式。下載地址:https://github.com/foreverjiangting/set-menu/tree/master/menu 這里使用的交互使用了data-toggle="collapse",但和ng有沖突,所以需要用ng來控制交互。我們來看看怎么寫:

<!-- 添加工具欄 --><div class="set-toolbar"><h4 class="text-center">工具欄</h4><!-- sidebar content --><div class="sidebar-menu"><a ng-click="toggle('titleStyle')" class="nav-header menu-first " ><span class="glyphicon glyphicon-pencil"></span>首頁</a><ul ng-hide="titleStyle" id="userMeun" class="nav nav-list menu-second"><li ng-repeat="title in sources.titles" ng-click="insertHtml('titles', title)"><a>{{title.name}}</a></li></ul><a ng-click="toggle('titleIcon')" class="nav-header menu-first"><span class="glyphicon glyphicon-picture"></span>圖標</a><ul ng-hide="titleIcon" id="articleMenu" class="nav nav-list menu-second"><li class="set-image" ng-repeat="img in sources.imgs" ng-click="insertHtml('imgs', img)"><a><img ng-src="{{img.url}}"></a></li></ul><a ng-click="toggle('titleYouxia')" class="nav-header menu-first "><span class="glyphicon glyphicon-user">生活</span></a><ul ng-hide="titleYouxia" id="glyphicnMenu" class="nav nav-list menu-second"><li ng-repeat="yx in sources.yxs" ng-click="insertHtml('yxs', yx)"><a>{{yx.name}}</a></li></ul><a ng-click="toggle('titleServe')" class="nav-header menu-first "><span class="glyphicon glyphicon-briefcase"></span>留言板</a><ul ng-hide="titleServe" id="serveMenu" class="nav nav-list menu-second"><li ng-repeat="ser in sources.sers" ng-click="insertHtml('sers', ser)"><a>{{ser.name}}</a></li></ul><a ng-click="toggle('titleArticle')" class="nav-header menu-first "><span class="glyphicon glyphicon-thumbs-up"></span>推薦文章</a><ul ng-hide="titleArticle" id="ArticleMenu" class="nav nav-list menu-second"><li ng-repeat="arc in sources.arcs" ng-click="insertHtml('arcs', arc)"><a>{{arc.article}}</a></li></ul></div><!-- 內容主題結束 --></div> 

js里面的代碼如下:

// 工具欄交互樣式$scope.titleStyle = $scope.titleIcon = $scope.titleYouxia = $scope.titleServe = $titleArticle=false;$scope.toggle = function(style){$scope[style] =! $scope[style];}

ng控制的手風琴效果,簡單輕便,代碼量少。

效果如下:

樣式寫好以后就是插入到編輯器中,那么如何插入呢?這里有兩種,直接插,和根據搜索之后的文章進行插入。直接插入的話比較簡單。

$scope.insertHtml = function (type, item) {if (type === 'titles' || type === 'imgs') {editor.execCommand('insertHtml', item.html);}

插入之后的效果如下:

當然我們這樣做有什么用呢?主要是利用編輯器里面的內容,利用ng數據綁定,反映到app上,從而制作app的文章編輯界面。

搜索的功能制作

數據自然是從api里面獲取,ng如何獲取api里的數據呢?我們來看看,主要是利用http,獲取數據,然后利用then方法進行回調,得到 http,獲取數據,然后利用then方法進行回調,得到scope.data的數據。

angular.module('service').service('ArticleService', function ($http) {return {searchArticle: function(title){ return $http.get('api/article/search',{ data: { title:title } }); } }; });

這里我們聲明了ArticleService,并給它返回了api數據,那么我們將該依賴注入要調用的頁面即可調用其方法。還是看下代碼:通常服務調用

API返回的數據放在一個文件夾里面而控制數據的控制器單獨放在一個文件夾里面,那么我們來看下控制器里是如何回調api的數據。

angular.module('article.controllers').controller('serviceCtrl', function ($scope, $rootScope, $filter, $timeout, $state, $stateParams, ContentService,, ArticleService, type) {

注意,你需要把ArticleService注入到控制器里面,然后才能回調數據。怎么回調數據呢?看下面的代碼:

var arcfullSearch={text: '',result: [],selected: [], //選擇后的數據先存入數組beginSearch: function () {var self = this;var text = self.text.trim();if(!text) return;ArticleService.searchArticle(text).then(function (data){ //獲取得到數據 第二個data表示獲取數組里的內容,第一個是傳進來的參數 self.result = data.data;//獲取數據}, function (err) {console.log(err);}); },};

OK,我們成功的回調到了函數數據。關于搜索部分,下面總結下不清楚的知識點。

總結知識點

1.如何將數組變成字符串的寫法

2.關于replace替換為函數的用法

ECMAScript規定,replace()方法的參數replacement可以是函數也可以是字符串。在這種情況下,每個匹配都調用該函數,它返回的字

符串將替換文本使用。function回調函數返回的第一個參數表示匹配到的字符,第二個以及往后都是匹配到的分組數據。來看下代碼。

3.關于[p.slice(0,index)][p.slice(index+1)]是什么鬼?調試一下就知道了。

再來看待合成代碼就明白了什么意思。

var arr = serve.map(function (xx) {return item.html.replace(/{{([/w/.]+?)}}/gi, function (match, p) {var index = p.indexOf('.'); if (index > 0) {return formatField(xx[p.slice(0, index)][p.slice(index+1)]);} else {return formatField(xx[p]);}}); });

4.關于定時器setTimeout的原理,先來看看代碼

為什么輸出的是-1呢?我們先來看下原理setTimeout()

setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。

setTimeout 運用在延遲一段時間,再進行某項操作。即在載入后延遲指定時間后,去執行一次表達式,僅執行一次。

setTimeout(代碼,延遲時間);

該延遲時間并不是你期望的時間,不同的瀏覽器,延遲時間不一樣。拿上面例子來看,也就是說延遲時間并不是上面的0。對比來看

也就是說setTimeout只執行一次,但時間并不是0,具體為多少秒延遲,不確定。那么就不奇怪,為什么出現的為-1了。我們來分析下該程序,

當i=3時,while(3)后,i減為2,執行一個setTimeout

當i=2時,while(2)后,i減為1,執行一個setTimeout

當i=1時,while(0)后,i減為2,執行一個setTimeout

當i=0時,while(0)后,i減為-1,此時程序結束,但設置setTimeout的時間間隔 為0 不會理解 執行的,會插入到線程的執行隊列中,等到i

變為-1時候,才會執行前面的三個setTimeout,而此時i已經變為-1了,所以,輸出為-1.此時打印的console是之前那個console打印出來的

setTimeout是異步代碼,也就是說這樣寫setTimeout(fn, 100)并不代表fn肯定在100毫秒之后馬上就執行,延遲很可能會更長。因為所有的

異步事件(包括計時器、或者一個 XMLHttpRequest 完成)僅僅當程序執行期間有空閑的時候才會執行,不是你規定了什么時候就什么時候執行。

以上所述是小編給大家介紹的AngularJs定制樣式插入到ueditor中的問題小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品中文字幕乱| 欧洲亚洲妇女av| 91免费在线视频网站| 欧美最猛性xxxx| 欧美日韩第一视频| 亚洲毛茸茸少妇高潮呻吟| 国产一区二区三区视频| 久久精品国产亚洲7777| 国a精品视频大全| 在线看福利67194| 在线观看欧美日韩国产| 久久国产精品电影| 97色在线观看| 在线激情影院一区| 中文在线资源观看视频网站免费不卡| 国产精品中文久久久久久久| 97在线视频免费观看| 欧美亚洲免费电影| 精品国产一区二区三区四区在线观看| 成人福利视频在线观看| 国产精品美女在线观看| 亚洲视屏在线播放| 国产精自产拍久久久久久| 欧美视频专区一二在线观看| 久久久999精品视频| 久久久久久91香蕉国产| 姬川优奈aav一区二区| 国产日韩在线精品av| 91国产视频在线播放| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美成aaa人片在线观看蜜臀| 欧美色另类天堂2015| 久久精品视频亚洲| 三级精品视频久久久久| 欧美在线亚洲一区| 川上优av一区二区线观看| 欧洲成人免费aa| 国产精品视频久久久久| 浅井舞香一区二区| 久久免费少妇高潮久久精品99| 国产精品99久久久久久久久| 亚洲第一视频网| 亚洲国产第一页| 国产精品白嫩美女在线观看| 日韩美女视频免费看| 亚洲日本中文字幕| 日韩不卡在线观看| 欧美日韩国产一区二区| 国产精品久久久久久久美男| 国产成人精品视| 欧美激情国产日韩精品一区18| 成人日韩av在线| 国产欧美日韩视频| 国产精品久久久久久久av电影| 92看片淫黄大片欧美看国产片| 国产亚洲欧美日韩美女| 精品国内亚洲在观看18黄| 伊是香蕉大人久久| 亚洲欧美制服中文字幕| 欧美性猛交xxxx黑人猛交| 国产乱人伦真实精品视频| 日韩中文字幕在线免费观看| 国产成人精品免高潮在线观看| 中文字幕日本精品| 亚洲最大中文字幕| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品久久久一区二区三区| 久久久久久国产三级电影| 欧美肥老妇视频| 91精品国产综合久久男男| 91免费看片网站| 97超级碰碰人国产在线观看| 日韩国产精品亚洲а∨天堂免| 日韩成人在线观看| 成人444kkkk在线观看| 国产在线一区二区三区| 午夜精品久久久久久久久久久久| 国产视频精品va久久久久久| 欧美日韩国产一区在线| 亚洲日韩中文字幕| 欧美重口另类videos人妖| 亚洲欧美国产精品| 欧美一级视频免费在线观看| 欧美午夜久久久| 欧美亚洲在线视频| 奇米4444一区二区三区| 日韩激情第一页| 国产成人+综合亚洲+天堂| 国产成人精品a视频一区www| 亚洲免费精彩视频| 91成人天堂久久成人| 国产99久久久欧美黑人| 国内精品久久久久久久| 91精品国产高清久久久久久91| 亚洲а∨天堂久久精品9966| 92福利视频午夜1000合集在线观看| 久久久国产在线视频| 亚洲热线99精品视频| 国产精品亚发布| 亚洲激情视频在线播放| 91嫩草在线视频| 91久久精品日日躁夜夜躁国产| 欧美夫妻性生活视频| 亚洲国产成人91精品| 91亚洲国产成人久久精品网站| 色综合久久天天综线观看| 色多多国产成人永久免费网站| 亚洲精品视频在线观看视频| 欧美日韩中国免费专区在线看| 在线观看免费高清视频97| 中文综合在线观看| 久久久久中文字幕| 最近2019年手机中文字幕| 亚洲天堂男人天堂女人天堂| 亚洲**2019国产| 国产精品丝袜久久久久久高清| 国产精品一区二区三区在线播放| 国产亚洲欧美日韩精品| 精品欧美一区二区三区| 色先锋资源久久综合5566| 午夜精品在线视频| 日韩av男人的天堂| 成人在线观看视频网站| 亚洲大尺度美女在线| 中文国产成人精品久久一| 中文字幕在线看视频国产欧美在线看完整| 久久中国妇女中文字幕| 亚洲色图综合网| 日韩av三级在线观看| 亚洲美女av在线| 日韩亚洲精品视频| 久久人人爽人人爽人人片亚洲| 日韩av手机在线观看| 欧美二区乱c黑人| 久久久视频在线| 欧美理论电影在线观看| 日韩久久精品成人| 91免费欧美精品| 成人网页在线免费观看| 91免费在线视频网站| 久久久久久噜噜噜久久久精品| 国内精品一区二区三区| 亚洲free嫩bbb| 一区二区三区回区在观看免费视频| 色综合伊人色综合网| 欧美情侣性视频| 欧美激情精品在线| 国产免费一区二区三区香蕉精| 国产91精品青草社区| 久久久久久久成人| 精品视频在线播放| 国产一区二区精品丝袜| 亚洲天堂视频在线观看| 性欧美亚洲xxxx乳在线观看| 色综合天天综合网国产成人网| 26uuu另类亚洲欧美日本老年| 久久综合电影一区| 久久久精品一区二区三区| 亚洲精品国产精品国自产观看浪潮| 国产欧美精品日韩| 欧美精品激情blacked18| 92看片淫黄大片欧美看国产片| 97视频免费看| 激情成人在线视频|