将TextArea换行符绑定到html

Raj*_*jat 1 ember.js

我有一个textarea绑定到div,这样你在textarea中输入的任何内容都会更新div.

绑定不受尊重的唯一事情是textarea中的换行符,所以如果你在textarea中点击'enter',那么div就不会中断.

小提琴:http://jsfiddle.net/lifeinafolder/Ajkyw/19/

我正在使用帮助器,但它不起作用.

根据此链接上的第4点:http://codebrief.com/2012/03/eight-ember-dot-js-gotchas-with-workarounds/,它不应该工作.但即使有关于该链接的解决方案,我也无法让它发挥作用.

有关如何使用<br/>textarea中的换行符上的标签更新div的任何想法?

Rya*_*yan 7

使用计算属性来格式化位置的换行符.

HTML:

<script type="text/x-handlebars">
    {{#with App.obj}}
        {{view Ember.TextArea valueBinding="location"}}  
        <div>{{{formattedLocation}}}</div>
    {{/with}}
</script>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

App.obj = Ember.Object.create({
    location:'Palo Alto',

    formattedLocation: function() {
        return this.get('location').replace(/\n\r?/g, '<br />');
    }.property('location').cacheable()
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/e8G2j/

在示例中,我删除了您的帮助程序,以便更准确地了解正在发生的事情.如果您需要使用帮助程序并且无法弄清楚,请告诉我,我将重新添加帮助程序.

  • 我不认为使用"triple-stash"{{{}}}是非常安全的,因为内容可能包含HTML/JS,从而使您的网站易受攻击.我建议使用这样的帮手:https://gist.github.com/lagartoflojo/6090175.这个片段首先转义内容,然后将\n\r \n替换为<br> <br>. (4认同)