Angularjs 使用角度限制、切片或过滤器的多行文本字段

Angularjs 使用角度限制、切片或过滤器的多行文本字段,angularjs,cordova,ionic-framework,Angularjs,Cordova,Ionic Framework,我有一个HTML字段,它应该显示最近发送给/发送给您的文本消息的前几行,类似于iphone上的消息。我想要最多两行文字,第二行的末尾用省略号切掉。按照格式,每行只能容纳45个字符。最好有一种方法可以正确地进行分词,但我也没有找到 我还计划使用ionic/cordova来构建它,所以我不能依赖纯css、SCS或任何其他webkit技巧,所以我尝试只使用angular。我真的很接近,但我不能得到它 我的解决方案基本上是将我的消息文本化,{{message.text},并使用limito或slice方

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

我还计划使用ionic/cordova来构建它,所以我不能依赖纯css、SCS或任何其他webkit技巧,所以我尝试只使用angular。我真的很接近,但我不能得到它

我的解决方案基本上是将我的消息文本化,
{{message.text}
,并使用
limito
slice
方法获取返回数组文本的前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>

{{message.text | limito:45}}
{{message.text.slice(45,90)} {{message.text.length>45?'…':''}
我理解这里的问题,这是我在使用相同的结果集,在第一行我得到了第一个45,第二行我得到了第一个90,然后从最后我得到了46…这是没有意义的,我意识到,但我感觉我很接近,任何指导都是值得的

编辑:
我想我刚刚用slice(上面的更改)解决了这个问题!现在有人知道如何在文字上这样做了吗?

为什么不能使用limito:90(为什么要将其作为45使用两次??)并在显示消息的字段中启用换行符

在控制器中使用Limito,如

$filter('limitTo')(input, limit) 
$filter('limitTo')(message.text, 90) //In your case limit is 90 
就你而言, 前45个字符:
$filter('limito')(message.text,45)
下一个45字符:
$filter('limito')($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

使用过滤器不会修改LHS上的实际模型。因此,您总是在处理同一个message.text。因此,通过逻辑
message.text.length>90,它应该可以工作。它必须是两行文本,所以你能想出一种方法,在没有css的情况下,让前45个字符在一行,下45个字符在第二行吗?是的!这实际上是我以前做过的,但后来在我的编辑中替换了它,现在在我的问题上面。谢谢你对偶然做单词包装有什么想法吗?我找到的最接近的东西是这个过滤器,但我必须重写它一点,以获得我认为的逐字功能?

youverylongtext

,为测试编写css。test{word wrap:break word;}