angularJS在数组中显示空槽,但事实并非如此

时间:2016-01-07 20:33:53

标签: arrays angularjs slots

这很奇怪,我不知道如何解决这个问题......

我的控制器使用带有promise的服务进行ajax调用,效果很好。

horariosOcupadosService.getHorariosOcupados($scope.formData.cmbUnidade, $scope.formData.cmbDiaSemana).then(function(response) {
            //when I set my variable with the result, everything is fine 
            //and I can iterate with ng-repeat with no problem
            $scope.horariosOcupados = response;

            $scope.formData.qtdeHorarios = $scope.horariosOcupados.length;

        }), function(error) {
            console.log(response);

        };

但在我的HTML中,我有一个问题...在我的ng-repeat之后,如果我尝试打印$ scope.horariosOcupados(

{{ horariosOcupados | json }}
),它会正常工作,它会打印:< p>

[{},{},{}]

如果我更改ng-model字段的值,它只会显示一些内容。

                <div id="horarios">
                <div ng-repeat="horarioOcupado in horariosOcupados track by $index" id="horario{{$index}}" class="form-group" style="margin: 15px; 0px;">
                    <div class="col-md-2 text-center" id="remove"><a ng-href="#" ng-click="removeHorario($index)"><i class="fa fa-trash-o fa-2x"></i></a></div>
                    <div class="col-md-3">
                        <div class="input-group">
                          <span class="input-group-addon">Horário inicial</span><input name="hrEntra{{$index}}" type="text" ng-model="horariosOcupados[$index].hrInicial">
                        </div>
                    </div>

                </div>
            </div>
            <!-- GRADE DE HORÁRIOS - FIM -->
           <pre>{{ horariosOcupados | json }}</pre>

有人能帮我解决一下吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可能正在做一些角度世界之外的事情。 你如何异步获取数据? 除了角度内置的$ http服务之外,您是否可以使用ajax调用?或者使用“普通”setTimeout函数而不是使用angular $ timeout版本? 我的猜测是,你不知不觉地以异步方式得到它而不会留在角度世界中。因此,angular对这些更改一无所知,也不会及时更新视图。

目前你可以做的是尝试

    $scope.horariosOcupados = response;

    $scope.formData.qtdeHorarios = $scope.horariosOcupados.length;

    $scope.$apply();

“告诉”角度某些东西已经改变,因此角度会立即重新渲染变化。 理想的是,如果你留在角度世界并且使用角度内置服务,那么大部分时间都没有必要这样做

答案 1 :(得分:0)

我明白了。问题是我的INPUT字段的最大长度。 &#34; 1900-01-01 08:00&#34; &GT; 5,所以angularJS将其设置为undefined。

谢谢大家的帮助!