I don't really want to use such old versions. I am interested in 1.2.x though.
Thanks, I will take a look and let you know how well it works in 1.2.x. Also, I am still interested in know what I did wrong. Thanks. Kamal. > On 19 Aug 2014, at 4:07, Cesar Andreu <[email protected]> wrote: > > I implemented a directive / service combo to do this. > You can check out the repo here: > https://github.com/cesarandreu/angular-server-form > > And I wrote a blog post on using it with Rails here: > http://blog.cesarandreu.com/posts/form_validation_with_angularjs_and_rails > It's easily extensible for usage with any backend, though. > > I can't assure you it works with such an old version of angular, though. I've > only tested it with 1.3 betas. > >> On Sunday, August 17, 2014 10:44:37 PM UTC-7, KamBha wrote: >> Hi, >> I am trying to create a simple way for the server side to return an error >> associated with a JSON path and have that information translate to a field >> error. For example, if the server returns:- >> >> { "errorMessage": "Code not valid when you say you want to leave on a >> Tuesday", "field" : "room[1].stay.code" } >> >> And I can then target the field directly. One way I thought about making >> this work is to make sure every value is an object and add a $$error where >> an error occurs. So, if you have this:- >> >> $scope.room[1].stay.code >> >> Then there would be some code which turns that value into an object (in >> case it isn't already) and adds $$error to that object as the message. Like >> so:- >> >> $scope.room[1].stay.code.$$error = 'Code not valid when you say you want to >> leave on a Tuesday'; >> >> I have tried to achieve this with a directive:- >> >> <input type="text" name="fruitName" ng-model="data.value" >> serverError="data.value.$$error" /> >> >> In this case serverError would be a path to the $$error value. >> >> var app = angular.module('angularjs-starter', []); >> >> app.controller('MainCtrl', function($scope) { >> $scope.doSomething = function () { >> alert('Submitted!'); >> } >> $scope.data = {}; >> $scope.data.value = new String('blah'); >> $scope.data.value.$$error = 'My Error'; >> $scope.data.toggleError = function() { >> if ($scope.data.value.$$error) { >> $scope.data.value.$$error = null; >> } >> else { >> $scope.data.value = new String($scope.data.value); >> $scope.data.value.$$error = "SOME ERROR"; >> } >> }; >> }); >> >> >> app.directive('input', function (){ >> return { >> require: 'ngModel', >> restrict: 'A', >> scope: { serverError : "=serverError" }, >> link: function(scope, elem, attr, ctrl) { >> var verificationFunction = function(viewValue) { >> >> if(scope.serverError) { >> ctrl.$setValidity('serverError',true); >> return viewValue; >> } >> else { >> ctrl.$setValidity('serverError',false); >> return undefined; >> } >> }; >> >> ctrl.$parsers.unshift(verificationFunction); >> ctrl.$formatters.unshift(verificationFunction); >> verificationFunction(); >> >> } >> }; >> }); >> >> I have a plunkr with my attempt:- >> >> http://plnkr.co/edit/Ug9oM1LNqPpTsONhRTnG?p=preview >> >> Now, I have had some success with 1.1.4, except that it does not seem to >> mark the form as invalid (but it does mark the field as invalid). Also, as >> soon I change the version to anything greater than that (eg 1.1.5) it stops >> working completely. >> >> What am I doing wrong? >> >> Thanks. >> >> Kamal. > > -- > You received this message because you are subscribed to a topic in the Google > Groups "AngularJS" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/angular/EUy9LtEYbFY/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/angular. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
