計算されたプロパティを使用してこれを解決できます。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}}
この場合、value
forはそれぞれEmber.TextArea
を介してのみ設定できるため、これは機能しません。value
valueBinding
{{view Ember.TextArea valueBinding="App.controller.transformedComplexValue" }}