位置: 编程技术 - 正文
推荐整理分享浅谈Angular文字折叠展开组件的原理分析(angular ngshow),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:angular width,angular ngshow,angular ngchange,angular的ngif,angular 文档,angular doc,angular语言,angular doc,内容如对您有帮助,希望把文章链接给更多的朋友!
自己写了个Angular的文字折叠组件,这种组件其实很多地方都能用到效果如下
展开后的效果
折叠后的效果
先放全部代码,使用的时候只需要把自己需要展现的文字{{designer.des}}替换成自己所在路由器所需要绑定的数据即可
下面我一句句的分析这个组件的思路
首先肯定是定义好Angular该组件化的模板和使用模式
EA为,使用元素和属性的方法都可以在DOM里面展现这个插件,既我可以这样 <textfold></textfold>也可以这样<div textfold="Wsscat"></div>的形式来复用该组件 后面我们使用link定义一个函数
这两个变量一个是此时折叠完后的高度(这个是在展开变成折叠的过程中不断发生变化的,最后折叠后就是等于minheight),一个文字完全展开时候获取的高度
这两句其实很重要的,当我们获取文字的高度时候,是必须要捕获文字的变化(文字完全渲染后的高度),所以我们用scope.$watch来捕获designer.des的变化,当data不为空,即文字已渲染后
再去执行回调函数textfold来获取当前文字的高度,暂时试过这种方法可以获取到文字渲染后的高度
如果顺序执行而不是回调执行
只会拿到span标签的默认高度而已
这里还可以添加个小技巧,增加一句scope.more();
这样就可以让它页面渲染完后先展开,然后再折叠,那么我们就在进来页面的时候默认是折叠的状态了,在程序里面,写这种效果,一般是先让它文字展开获取到高度再返回成折叠状态,来达到进来页面就是折叠的文字状态效果
var isExtend = true;这句是让下面的scope.more进入第一个分支折叠状态
这句是一句递归,其实就相当于实现jQuery的animate的文字框伸缩动画,只是这里用了一个递归来实现不断进来判断状态从而改变height值
然后通过改变scope.isMore改变它是查看更多…还是折叠
由于这里是用DOM操作
下面这里最好加多一句
来获取DOM的变化
其实大概思路就是很简单的,其他一些地方也是很容易理解~有什么好的方法欢迎推荐,或者文中有什么错漏或者不足还请多多留言告知,
标签: angular ngshow
本文链接地址:https://www.jiuchutong.com/biancheng/378889.html 转载请保留说明!友情链接: 武汉网站建设