模型绑定未正确更新

卡卡奈

我需要为数组的每个元素附加一些 html。我找到了这个解决方案来做到这一点,但是当我尝试通过 javascript 动态更新 ng-model 时,输入永远不会更新。

我正在尝试像这样解决我的问题:

javascript:

var divElement = angular.element(document.querySelector('.change'));
        $scope.rowsSelected=($('#querytable').DataTable().rows('.selected').data());
        for(var i = 0; i<$('#querytable').DataTable().rows('.selected').data().length; i++){
            $scope.dataSelected.push($('#querytable').DataTable().rows('.selected').data()[i]);
            divElement.append('<form name="formChooseAdress" ng-submit="submitForm()" novalidate><div class="form-group col-md-4 col-lg-4"><label>Fatura: </label><input type="text" class="form-control" id="ff_'+i+'" ng-model="model_firstField_'+i+'" disabled></div><div class="form-group col-md-4 col-lg-4"><label>Valor total: </label><input type="text" class="form-control" id="fs_'+i+'" ng-model="model_secondField_'+i+'" disabled></div><div class="form-group col-md-4 col-lg-4"><label>Valor a pagar: </label><input type="number" class="form-control" id="ft_'+i+'" ng-model="model_thirdField_'+i+'" max="model_secondField_'+i+'" min="0"></div><br><br><br><p></p></form>');
            var a="model_firstField_";
            var b="model_secondField_";
            var c="model_thirdField_";

            var d=i;
            var res=a.concat(d);
            var res1=b.concat(d);
            var res2=c.concat(d);

            $scope[res]= $scope.dataSelected[i].chosen;
            $scope[res1]= $scope.dataSelected[i].chosen1;
            $scope[res2]= $scope.dataSelected[i].chosen2;
        };
        $scope.$apply();

此代码出现在具有 id 更改的 div 的模态内。

模态html代码:

<div class="modal fade" id="changeCA" data-backdrop="false" tabindex="-1" role="dialog"
     aria-labelledby="myModalLabel">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                        aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">Changes</h4>
            </div>
            <div class="modal-body">
                <div class="row">

                    <div class="form-group col-md-12 col-lg-12">
                        <label>Data: </label>
                        <input type="date" class="form-control" id="tp" ng-model="model_tp">
                    </div>
                </div>
                <br>
                <br>
                <div class="change">
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal"
                        ng-click="next()">Next</button>
            </div>
        </div>
    </div>
</div>

如何显示值?

杰伊舒克拉

好吧,在 AngularJS 控制器中像这样使用 jQuery 并不是一个好习惯。但是我可以看到您面临的问题是因为您不是Compiling角度理解的 html。$compile在附加到 DOM 之前,只需使用服务来编译您的 html 字符串。你会看到它ng-model会更新。

注入$compile您的控制器并尝试以下代码。

var template = $compile('<form name="formChooseAdress" ng-submit="submitForm()" novalidate><div class="form-group col-md-4 col-lg-4"><label>Fatura: </label><input type="text" class="form-control" id="ff_'+i+'" ng-model="model_firstField_'+i+'" disabled></div><div class="form-group col-md-4 col-lg-4"><label>Valor total: </label><input type="text" class="form-control" id="fs_'+i+'" ng-model="model_secondField_'+i+'" disabled></div><div class="form-group col-md-4 col-lg-4"><label>Valor a pagar: </label><input type="number" class="form-control" id="ft_'+i+'" ng-model="model_thirdField_'+i+'" max="model_secondField_'+i+'" min="0"></div><br><br><br><p></p></form>')($scope, function(clonedElement, scope) { divElement.append(template); });

在此处阅读有关 $compile 的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章