div實現(xiàn)自適應(yīng)高度的textarea實現(xiàn)angular雙向綁定
相信不少同學(xué)模擬過騰訊的QQ做一個聊天應(yīng)用,至少我是其中一個。
過程中我遇到的一個問題就是QQ輸入框,自適應(yīng)高度,最高高度為3row。
如果你也像我一樣打算使用textarea,那么很抱歉,你一開始就錯了。
textarea不是不可以的,然后我是這樣錯的。(就是監(jiān)聽scroll 如果出現(xiàn)了,就增加1rows 的高度)然而這樣真的很挫
textarea.bind('change','keydown'){
if(scrollTop > 0 ) {
textarea.rows += 1
}
}
正確的打開方式應(yīng)該是利用 html5 全局屬性,然而在ios 移動端中,僅使用contenteditable,是無法獲得焦點的,無法進行輸入的,因此需要添加use-select屬性
<div contenteditable='true' style='-webkit-use-select:text'></div> //不同瀏覽器,支持度,和實現(xiàn)方式也有點不一樣,android和ios默認webkit內(nèi)核,所以使用這個夠了
在angular中使用可編輯的div:——》 angular的ng-model指令只用于select,input,textarea,不適用于div,所以要進一步封裝
/*
* 可編輯的div
* 應(yīng)用于發(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);
}
}
};
});
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 理解Angular數(shù)據(jù)雙向綁定
- 淺談angular.js中實現(xiàn)雙向綁定的方法$watch $digest $apply
- 自定義Angular指令與jQuery實現(xiàn)的Bootstrap風(fēng)格數(shù)據(jù)雙向綁定的單選與多選下拉框
- 深入學(xué)習(xí)AngularJS中數(shù)據(jù)的雙向綁定機制
- 實例剖析AngularJS框架中數(shù)據(jù)的雙向綁定運用
- 利用angular.copy取消變量的雙向綁定與解析
- Angular和Vue雙向數(shù)據(jù)綁定的實現(xiàn)原理(重點是vue的雙向綁定)
- AngularJS入門教程之雙向綁定詳解
- 深入理解Angularjs向指令傳遞數(shù)據(jù)雙向綁定機制
- angular+bootstrap的雙向數(shù)據(jù)綁定實例
相關(guān)文章
對angular 監(jiān)控數(shù)據(jù)模型變化的事件方法$watch詳解
今天小編就為大家分享一篇對angular 監(jiān)控數(shù)據(jù)模型變化的事件方法$watch詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Angular JS數(shù)據(jù)的雙向綁定詳解及實例
這篇文章主要介紹了Angular JS數(shù)據(jù)的雙向綁定詳解及實例的相關(guān)資料,需要的朋友可以參考下2016-12-12
解決ng-repeat產(chǎn)生的ng-model中取不到值的問題
今天小編就為大家分享一篇解決ng-repeat產(chǎn)生的ng-model中取不到值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
AngularJS 中使用Swiper制作滾動圖不能滑動的解決方法
Swiper是目前較為流行的移動端觸摸滑動插件,因為其簡單好用易上手,受到很多前端開發(fā)者的歡迎。這篇文章主要介紹了AngularJS 中使用Swiper制作滾動圖不能滑動的解決方法,需要的朋友可以參考下2016-11-11
Angular.js通過自定義指令directive實現(xiàn)滑塊滑動效果
這篇文章主要給大家介紹了關(guān)于Angular.js如何通過自定義指令directive實現(xiàn)滑塊滑動的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用angularjs具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-10-10

