我有一个Ember.Handlerbars.JSON帮助器,它将给定值格式化为缩进的JSON字符串。 我想设置textarea的内容(值),如下所示:
{{#view Ember.TextArea}}
{{JSON someValue}}
{{/view}}
这不起作用,因为我应该设置textareas的“value”属性。
然而,这也不起作用
{{view Ember.TextArea valueBinding="JSON someValue"}}
答案 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