AngularJS实现一个HTML元素内容可编辑指令
来源:互联网 发布:金百福软件 打不开 编辑:程序博客网 时间:2024/06/18 15:48
有时我们想让用户可编辑元素某个属性内容,比如自定义数据名称,所以在此实现一个简易的指令my-editable
先看效果吧:
指令代码:
.directive('myEditable', function ($timeout) { return { restrict: 'A', require: '?ngModel', templateUrl: "./t.html", transclude: true, link: function (scope, element, attrs, ngModel) { if (!ngModel) { return; } scope.isEdit = false; //获取内部输入框的controller var tempInputCtrl = element.find("input").controller("ngModel"); tempInputCtrl.$parsers.push(function (value) { //做输入验证,此处以不超过10位为例 var return_value = value; if (value.length > 10) { console.log("over 10"); return_value = value.slice(0, 10); } tempInputCtrl.$setViewValue(return_value); tempInputCtrl.$render(); return return_value; }); scope.edit = function () { scope.isEdit = true; scope.tempText = ngModel.$modelValue; // 输入框获取焦点 $timeout(function () { element.find("input")[0].focus(); }) } scope.save = function () { var html = scope.tempText; ngModel.$setViewValue(html); scope.isEdit = false; } scope.cancel = function () { scope.isEdit = false; } ngModel.$render = function () { scope.tempText = ngModel.$viewValue; }; element.find("input").on("blur", function () { console.log("input blur"); scope.isEdit = false; scope.$apply(); }) } };})
t.html指令模板代码:
<div> <ng-transclude ng-show="!isEdit"></ng-transclude> <input type="text" ng-model="tempText" ng-show="isEdit"> <button ng-click="edit()" ng-show="!isEdit">Edit</button> <button ng-mousedown="save()" ng-show="isEdit">Save</button> <button ng-mousedown="cancel()" ng-show="isEdit">Cancel</button></div>
HTML代码:
<body ng-controller="ctrl"> <div ng-model="data" my-editable> {{data}} </div> <!--显示实际Model值用--> <p> {{data}} </p></body>
当然这个指令存在局限性,比如可以外部获取正则内部做验证用。
还可以看这个指令:https://github.com/vitalets/angular-xeditable
阅读全文
0 0
- AngularJS实现一个HTML元素内容可编辑指令
- angularJS实现可编辑的下拉框
- HTML可编辑下拉框的实现
- html+javascript实现可编辑表格
- html+JQuery实现可编辑表格
- HTML可编辑下拉框的实现
- [JS]实现点击一个单元格后对应的内容处于可编辑状【转载】
- jsoup设置一个元素的HTML内容
- 内容可编辑contenteditable
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- 监听可编辑JComboBox内容改变实现验证
- JS实现双击内容变为可编辑状态
- JS实现双击内容变为可编辑状态
- angular自定义指令实现元素可任意移动
- angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
- HTML之JQuery基础实现可编辑表格
- angularJS-ng-model 指令.html
- IO流之缓冲流
- WPF简单教程:开篇
- 1017. A除以B (20)
- 点分治总结
- STL--> list 双向循环链表容器 接口使用及介绍。 模拟实现 STL list容器
- AngularJS实现一个HTML元素内容可编辑指令
- [LeetCode]543. Diameter of Binary Tree(计算二叉树的直径的长度)
- C/C++结构体struct的不同
- spring的配置文件applicationContext中没有快捷键问题
- Android studio gradle简单解析及使用指南
- python读取csv文件
- python列表操作,排序
- JSON是什么?
- Q-Learning的学习及简单应用