2

与えられた値をインデントされたJSON文字列にフォーマットするEmber.Handlerbars.JSONヘルパーを入手しました。次のようにテキストエリアのコンテンツ(値)を設定したいと思います。

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

代わりにtextareasの「value」属性を設定する必要があるため、これは機能しません。

ただし、これも機能しません

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

1 に答える 1

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、のような式ではなく引数としてパスを取るため、機能しませんJSON App.someComplexValue。変換された値にバインドする場合は、計算プロパティを作成してこれにバインドするだけです。それはそのようなことをするEmberの方法です...

元の質問には、次のコードがあります。

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

この場合、valueforはそれぞれEmber.TextAreaを介してのみ設定できるため、これは機能しません。valuevalueBinding

{{view Ember.TextArea valueBinding="App.controller.transformedComplexValue" }}
于 2012-07-04T11:57:30.547 に答える