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 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.

Reply via email to