div實現自適應高度的textarea實現angular雙向綁定
相信不少同學模擬過騰訊的QQ做一個聊天應用,至少我是其中一個。
過程中我遇到的一個問題就是QQ輸入框,自適應高度,最高高度為3row。
如果你也像我一樣打算使用textarea,那么很抱歉,你一開始就錯了。
textarea不是不可以的,然后我是這樣錯的。(就是監(jiān)聽scroll 如果出現了,就增加1rows 的高度)然而這樣真的很挫
textarea.bind('change','keydown'){ if(scrollTop > 0 ) { textarea.rows += 1 } }
正確的打開方式應該是利用 html5 全局屬性,然而在ios 移動端中,僅使用contenteditable,是無法獲得焦點的,無法進行輸入的,因此需要添加use-select屬性
<div contenteditable='true' style='-webkit-use-select:text'></div> //不同瀏覽器,支持度,和實現方式也有點不一樣,android和ios默認webkit內核,所以使用這個夠了
在angular中使用可編輯的div:——》 angular的ng-model指令只用于select,input,textarea,不適用于div,所以要進一步封裝
/* * 可編輯的div * 應用于發(fā)表評論中有表情的時候,div中添加img(表情) * <div contenteditable strp-br='true' style='-webkit-use-select:text'></div> */ app.directive('contenteditable', function() { return { restrict: 'A', require: '?ngModel', link: function(scope, element, attrs, ngModel) { if (!ngModel) return; ngModel.$render = function() { element.html(ngModel.$viewValue || ''); }; element.on('blur keyup change', function() { scope.$evalAsync(read); }); read(); // initialize function read() { var html = element.html(); if ( attrs.stripBr && html == '<br>' ) { //清除 <br> html = ''; } ngModel.$setViewValue(html); } } }; });
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關文章
Angular 4根據組件名稱動態(tài)創(chuàng)建出組件的方法教程
組件是我們在學習angular中必不可少的一部分,下面這篇文章主要給大家介紹了關于Angular 4如何根據組件名稱動態(tài)創(chuàng)建出組件的相關資料,文中通過圖文與示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11Bootstrap與Angularjs的模態(tài)框實例代碼
這篇文章主要介紹了Bootstrap與Angularjs的模態(tài)框實例代碼,需要的朋友可以參考下2017-08-08AngularJs中 ng-repeat指令中實現含有自定義指令的動態(tài)html的方法
今天用angular寫table的時候,遇到了一個問題。在ng-repeat中,含有動態(tài)的html,而這些html中含有自定義指令,怎么實現呢?下面小編給大家分享AngularJs中 ng-repeat指令中實現含有自定義指令的動態(tài)html的方法,一起看看吧2017-01-01