zoukankan      html  css  js  c++  java
  • angularjs输入框自动变化高度(可输入div并运用ng-model)附带placeholder效果

    angular其实不再需要input和textarea标签来做输入功能,只需要给div加个h5属性contenteditable="true"即可使用ng-model实现双向绑定,和高度自适应的功能,

    苹果手机不支持h5属性 contenteditable="true",需要在这个div中添加样式-webkit-user-select:text 

    这里的ng-model只能绑定对象中的某一个元素,如ng-model=“content.item”

       div{

         -webkit-user-select:text; 

       }

       /*为空时显示 element attribute content*/
        div:empty:before{
         content: attr(placeholder);   /* element attribute*/
         color:#red;              /*content: 'this is content';*/
       }
       /*焦点时内容为空*/
        div:focus:before{
         content:none;
       }

    html代码

    <div contenteditable="true" class="texttitle zkht-create-answer" ng-model="content.item"></div>

    directive.js

    app.directive('contenteditable', function() {
      return {
        restrict: 'A', // 只用于属性
        require: '?ngModel', // get a hold of NgModelController
      link: function(scope, element, attrs, ngModel) {
        if (!ngModel) {
          return;
        } 
        // Specify how UI should be updated
        ngModel.$render = function() {
          element.html(ngModel.$viewValue || '');
        };
        // Listen for change events to enable binding
        element.on('blur keyup change', function() {
          scope.$apply(readViewText);
        });
        // No need to initialize, AngularJS will initialize the text based on ng-model attribute
        // Write data to the model
        function readViewText() {
          var html = element.html();
          // When we clear the content editable the browser leaves a <br> behind
          // If strip-br attribute is provided then we strip this out
          if (attrs.stripBr && html === '<br>') {
            html = '';
          }
          ngModel.$setViewValue(html);
        }
      }
    };

  • 相关阅读:
    再谈C#装箱和拆箱操作
    C#装箱与拆箱总结
    大话设计模式
    创建ASP.NET Webservice
    Lambada和linq查询数据库的比较
    设置VS2015背景图片(转载)
    windows 下使用Linux 子系统-安装.net core 环境
    .net core 3.1 ef Migrations 使用 CLI 数据迁移及同步
    linq 大数据 sql 查询及分页优化
    数据迁移最快方式,多线程并行执行 Sql插入
  • 原文地址:https://www.cnblogs.com/cutone/p/5859336.html
Copyright © 2011-2022 走看看