Ember.TextArea通过把手助手设置输入

时间:2012-07-04 09:21:25

标签: binding textarea ember.js helper

我有一个Ember.Handlerbars.JSON帮助器,它将给定值格式化为缩进的JSON字符串。 我想设置textarea的内容(值),如下所示:

    {{#view Ember.TextArea}}
       {{JSON someValue}}
    {{/view}}

这不起作用,因为我应该设置textareas的“value”属性。

然而,这也不起作用

    {{view Ember.TextArea valueBinding="JSON someValue"}}

1 个答案:

答案 0 :(得分:5)

您可以使用计算属性来解决此问题,请参阅http://jsfiddle.net/pangratz666/3A33H/

<强>车把

<script type="text/x-handlebars" >
    {{#with App.jsonController}}
        {{view Ember.TextArea valueBinding="formatted" rows="10" }}    
    {{/with}}
</script>​

<强>的JavaScript

App = Ember.Application.create({
    formatJSON: function(obj) {
        return JSON.stringify(obj, null, '\t');
    }
});

App.jsonController = Ember.Object.create({
    content: {
        abc: 123,
        foo: 'hello'
    },

    formatted: function() {
        var obj = this.get('content');
        return App.formatJSON(obj);
    }.property('content')
});​

更新您的评论

在评论中的小提琴(http://jsfiddle.net/4QNur/)中你声明{{view Ember.TextArea valueBinding="JSON App.someComplexValue"}}:这不起作用,因为valueBinding将路径作为参数而不是表达式,如{{1} }。如果要绑定到转换后的值,只需创建一个计算属性并绑定到它。这就是Ember做这些事情的方式......

在原始问题中,您有以下代码:

JSON App.someComplexValue

在这种情况下,这不起作用,因为{{#view Ember.TextArea}} {{JSON someValue}} {{/view}} 的{​​{1}}只能分别通过value设置Ember.TextArea

value