Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 角度显示工作不正常_Json_Angularjs_Ng Show - Fatal编程技术网

Json 角度显示工作不正常

Json 角度显示工作不正常,json,angularjs,ng-show,Json,Angularjs,Ng Show,我有一个函数,在提交html表单时执行,如果在服务器上处理表单时出现错误,错误将作为json返回。我想向用户显示这些错误,但由于某些原因,我的error div容器上的ng show从不显示 Html代码: <form class="form-horizontal" role="form" name="registerForm" ng-controller="RegisterController as register" ng-submit="registerForm.$valid &am

我有一个函数,在提交html表单时执行,如果在服务器上处理表单时出现错误,错误将作为json返回。我想向用户显示这些错误,但由于某些原因,我的error div容器上的ng show从不显示

Html代码:

<form class="form-horizontal" role="form" name="registerForm" ng-controller="RegisterController as register" ng-submit="registerForm.$valid && register()" novalidate>
        <div class="form-group">
            <div class="col-md-3">
                <label for="email">Email: </label>
            </div>

            <div class="col-md-9">
                <input type="email" id="email" name="email" ng-model="d.email" class="form-control" ng-required/>
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-3">
                <label for="password">Password</label>
            </div>

            <div class="col-md-9">
                <input type="password" id="password" name="password" ng-model="d.password" class="form-control" ng-required/>
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-3">
                <label for="confPassword">Confirm Password</label>
            </div>

            <div class="col-md-9">
                <input type="password" id="password_confirmation" name="password_confirmation" ng-model="d.password_confirmation" nx-equal-ex="d.password" class="form-control" ng-required/>
            </div>
        </div>

        <span class="help-block errorMessages" ng-show="d.errors.length">
            <div class="alert alert-danger">
                <strong>Whoops!</strong> There were some problems with your input.<br><br>
                <ul class="list">
                    <li ng-repeat="error in d.errors"><% error %></li>
                </ul>
            </div>
        </span>

        <div class="form-group">
            <div class="col-md-12">
                <br/>
                <hr>
                <button class="big-red-button" type="submit">Register <i class="glyphicon glyphicon-chevron-right"></i></button>
            </div>
        </div>
    </form>

错误返回到页面时不会发生任何情况,ng show不会显示代码。

使用数据绑定显示错误:

<ul class="list">
 <li ng-repeat="error in d.errors"><% error %>{{error}}</li>
</ul>
  • {{error}

我可能错了,但是$.ajax是jQuery吗?如果是,

角度宇宙之外的任何东西都需要手动触发消化循环

所以你有两个选择

$scope.d.errors=responseJSON add之后

$scope.$apply();
或使用


长度始终存在,因此,如果之前没有在错误中保存任何内容,则需要指定类似于
ng show=“d.errors.length>0”
的内容。如果尝试过,则不起作用,请使用
ng show=“d.errors!==undefined”
Wow实际起作用,但没有预料到:对不起,我不明白,这看起来像我的代码中已经有的东西。如何在视图中进行数据绑定?只靠这个?你不应该使用{{error}}我将它改为,因为它与我的laravel blade tempateAh冲突。我知道你做了什么。好的,让我检查一下$scope。$apply()不起作用,在使用$http时出现了一个完全不同的问题,这就是为什么我切换到$ajax$scope。$apply()应该按预期更新你的dom。您尝试过这个$http代码段吗?没有测试它,但它应该可以工作当我使用$http.post时,它工作得很好,我的问题是,响应总是以html页面而不是json结束,只是因为laravel validation检查页面请求,如果它是ajax请求,则返回json对象,如果不是,则执行重定向。
$scope.$apply();
 $http.post({
   type: "POST",
   url: "/auth/register",
   headers : {
     'X-XSRF-Token': $("meta[name='csrf_token']").attr("content")
   },
   data: {
     email: $scope.d.email,
     password: $scope.d.password,
     password_confirmation: $scope.d.password_confirmation
   }
 }).success(
   function(data) {
     alert(data[0]);
   }
 ).error(function(err, status, headers, conf) {
     $scope.d.errors = data;
     //alert($scope.d.errors.name);
 });