AngularJS:textarea绑定到JSON对象显示“object-object”
发布时间:2020-12-17 08:42:15 所属栏目:安全 来源:网络整理
导读:我对AngularJS相当新。 我试图绑定一个对象到一个textarea。 HTML: textarea rows="5" cols="10" ng-model="menuItem.preset"/textarea 模型: { "kind": "title","label": "ADD_TITLE","iconSrc": "textTitle.png","experimentInclude": "","experimentExc
我对AngularJS相当新。
我试图绑定一个对象到一个textarea。 HTML: <textarea rows="5" cols="10" ng-model="menuItem.preset"></textarea> 模型: { "kind": "title","label": "ADD_TITLE","iconSrc": "textTitle.png","experimentInclude": "","experimentExclude": "three","preset": { "compType": "richTitle","styleId": "txtNew" } } 结果: 如何显示JSON字符串化(然后再将其另存为对象)?
我刚刚研究了我相信是最“正确”的方式这样做,因为我需要它为我的
https://github.com/vorburger/MUI.js …所以
here is a Plonker与我的解决方案。它基于&本质上是一个特殊情况(即应用程序)相关的Q
How to do two-way filtering in angular.js?附加的扭曲是模型更新也应该改变文本框..这是$ watch / $ setViewValue / $ render事情。
var app = angular.module('app',[]); app.directive('jsonText',function() { return { restrict: 'A',// only activate on element attribute require: 'ngModel',// get a hold of NgModelController link: function(scope,element,attrs,ngModelCtrl) { var lastValid; // push() if faster than unshift(),and avail. in IE8 and earlier (unshift isn't) ngModelCtrl.$parsers.push(fromUser); ngModelCtrl.$formatters.push(toUser); // clear any invalid changes on blur element.bind('blur',function() { element.val(toUser(scope.$eval(attrs.ngModel))); }); // $watch(attrs.ngModel) wouldn't work if this directive created a new scope; // see http://stackoverflow.com/questions/14693052/watch-ngmodel-from-inside-directive-using-isolate-scope how to do it then scope.$watch(attrs.ngModel,function(newValue,oldValue) { lastValid = lastValid || newValue; if (newValue != oldValue) { ngModelCtrl.$setViewValue(toUser(newValue)); // TODO avoid this causing the focus of the input to be lost.. ngModelCtrl.$render(); } },true); // MUST use objectEquality (true) here,for some reason.. function fromUser(text) { // Beware: trim() is not available in old browsers if (!text || text.trim() === '') { return {}; } else { try { lastValid = angular.fromJson(text); ngModelCtrl.$setValidity('invalidJson',true); } catch (e) { ngModelCtrl.$setValidity('invalidJson',false); } return lastValid; } } function toUser(object) { // better than JSON.stringify(),because it formats + filters $$hashKey etc. return angular.toJson(object,true); } } }; }); app.controller('Ctrl',['$scope',function($scope) { $scope.model = {}; $scope.model.data = { "kind": "title","styleId": "txtNew" } }; } ]); <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <div ng-app="app" class="container"> <div ng-controller="Ctrl" class="row"> <textarea json-text ng-model='model.data' rows="15"></textarea> <p>{{ model.data }}</p> </div> </div> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- RMI、Hessian、Burlap、Httpinvoker、WebService的比较
- 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboar
- unix/linux 利用inode号删除特殊字符的文件
- 5天学会jaxws-webservice编程第二天
- Linux下netstat命令的一些常见用法
- AngularJS加载进度条
- 面向总部与分支之间的公网统一安全对接方案
- WebService中webmethod的六个属性
- 将Scala文件放在Play Framework 2.0中的哪个位置,以便将其编
- angularjs – UI-Grid:错误“严格模式下不允许的属性的多个