Ember.TextArea establece la entrada a través del asistente del manillar

Obtuve un ayudante Ember.Handlerbars.JSON, que formatea un valor dado en una cadena JSON con sangría. Me gustaría establecer el contenido (valor) de un área de texto como esta:

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

Esto no funciona, ya que debería establecer el atributo "valor" de las áreas de texto en su lugar.

Sin embargo, esto tampoco funciona.

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

preguntado el 04 de julio de 12 a las 10:07

¿Cómo se ve tu ayudante JSON? ¿Puede proporcionar un JSFiddle? Puedes usar esto como punto de partida: jsfiddle.net/pangratz666/eTcDu -

aquí está jsfiddle.net/hA2A6 -

¿Dónde está tu ayudante JSON? No está incluido en la muestra... -

1 Respuestas

Puede resolver esto usando una propiedad calculada, vea http://jsfiddle.net/pangratz666/3A33H/:

Manillar:

<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')
});​

Actualiza tus comentarios:

En el violín en el comentario ( http://jsfiddle.net/4QNur/ ) estás declarando {{view Ember.TextArea valueBinding="JSON App.someComplexValue"}}: esto no funciona desde valueBinding toma un camino como argumento y no como una expresión, como JSON App.someComplexValue. Si desea vincular a un valor transformado, simplemente cree una propiedad calculada y vincúlela. Esa es la forma Ember de hacer esas cosas...

En tu pregunta original tienes el siguiente código:

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

Esto no funciona en este caso, ya que el value para Ember.TextArea sólo se puede configurar a través de un value respectivamente valueBinding:

{{view Ember.TextArea valueBinding="App.controller.transformedComplexValue" }}

Respondido 04 Jul 12, 13:07

¿Hay alguna forma de crear programáticamente una instancia de App.JSONController en la plantilla del manillar? como: {{#with App.JSONController someValue}}... - labio

ahh el violín: jsfiddle con el asistente JSON ... todavía no estoy muy acostumbrado a jsfiddle - labio

No desea crear un controlador dentro de una plantilla de manillar. Las propiedades computadas son el camino a seguir... - pangratz

Supongo que tienes razón. Fui demasiado perezoso para implementar un controlador adecuado para esta tarea. - labio

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.