使用角度limitTo或切片或过滤器的多行文本字段

时间:2015-01-19 23:36:31

标签: angularjs cordova ionic-framework

我有一个HTML字段,它应该显示最近发送给您/从您发送的文本消息的前几行,类似于iphone上的消息。我想要最多两行文本,第二行的末尾用省略号切断。我每行只能按照格式化方式保存45个字符。最好是有一种方法可以正确地进行分词,但我还没有找到。

我还计划使用离子/ cordova构建它,所以我不能依赖纯css,scss或任何其他webkit技巧,所以我试图只使用角度来做这件事。我真的很接近,但我无法得到它。

我的解决方案基本上是使用我的消息文本{{message.text}},并使用limitToslice方法获取返回的数组文本的前45个字符,然后是第二行在它的正下方,在第45个之后的接下来的45个字符。

                <div class="row row-center">
                    <div class="col" style="padding:0px">
                        <div style="">
                        {{ message.text | limitTo: 45 }}<br />
                        {{ message.text.slice(45,90) }}
                        {{ message.text.length > 45 ? '...' : ''}}
                        </div>
                    </div>
                </div>

我理解这里的问题,即我使用相同的一组结果,在第一行我得到第一个45,第二行我得到第一个90然后从最后我开始了46 ...这没有意义我意识到但我觉得我很接近,任何指导都很感激。

编辑: 我想我只是想出来,使用切片(上面改了)!现在有人知道如何按字面做这个吗?

1 个答案:

答案 0 :(得分:1)

为什么你不能使用limitTo:90(为什么你要将它用作45次????)并在显示消息的字段中启用自动换行。

在控制器中使用limitTo,例如

$filter('limitTo')(input, limit) 
$filter('limitTo')(message.text, 90) //In your case limit is 90 

在你的情况下, 前45个字符:$filter('limitTo')(message.text, 45) 接下来45 characeter:$filter('limitTo')($filter('limitTo')(message.text, 90),-45);

在HTML中:

{{message.text | limitTo:45}}
{{message.text | limitTo:90 | limitTo:-45}} //This will fetch first 90 characters and removes first 45 from it giving you next 45 characters