Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS: textarea bind to JSON object shows "object-object"

Tags:

angularjs

I am fairly new to AngularJS.

I am trying to bind an object to a textarea.

HTML:

<textarea rows="5" cols="10" ng-model="menuItem.preset"></textarea> 

Model:

{     "kind": "title",     "label": "ADD_TITLE",     "iconSrc": "textTitle.png",     "experimentInclude": "",     "experimentExclude": "three",     "preset": {         "compType": "richTitle",         "styleId": "txtNew"     } } 

Result:

json shown as object

How can I show the JSON stringified (and later save it as an object again)?

like image 709
Guy Avatar asked Jul 27 '13 02:07

Guy


1 Answers

You need a custom directive that parses the input to an object, and displays the object as a string, respectively:

Something like:

angular.module('yourApp').directive('jsonText', function() {     return {         restrict: 'A',         require: 'ngModel',         link: function(scope, element, attr, ngModel) {                       function into(input) {             return JSON.parse(input);           }           function out(data) {             return JSON.stringify(data);           }           ngModel.$parsers.push(into);           ngModel.$formatters.push(out);          }     }; }); 
<textarea json-text rows="5" cols="10" ng-model="menuItem.preset"></textarea> 

Fiddle: http://jsfiddle.net/HzYQn/

like image 120
holographic-principle Avatar answered Sep 16 '22 14:09

holographic-principle