Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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
Javascript ng模型绑定未正确更新_Javascript_Html_Angularjs - Fatal编程技术网

Javascript ng模型绑定未正确更新

Javascript ng模型绑定未正确更新,javascript,html,angularjs,Javascript,Html,Angularjs,我需要为数组的每个元素添加一些html。我找到了这个解决方案,但当我试图通过javascript动态更新ng模型时,输入永远不会更新 我试图这样解决我的问题: javascript: var divElement = angular.element(document.querySelector('.change')); $scope.rowsSelected=($('#querytable').DataTable().rows('.selected').data());

我需要为数组的每个元素添加一些html。我找到了这个解决方案,但当我试图通过javascript动态更新ng模型时,输入永远不会更新

我试图这样解决我的问题:

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();
var divElement=angular.element(document.querySelector('.change');
$scope.rowsSelected=($('#querytable').DataTable().rows('.selected').data());

对于(var i=0;i在AngularJS控制器中这样使用jQuery不是一个好的做法。但是我可以看出您面临的问题是,您没有编译angular理解的html。只需在附加到DOM之前使用
$compile
服务编译html字符串。您将看到
ng模型将被更新

$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); });
var-template=$compile($scope,function(clonedElement,scope){divElement.append(template);});

在AngularJS控制器中这样使用jQuery不是一个好的做法。但是我可以看出您面临的问题是,您没有编译AngularJS理解的html。只需在附加到DOM之前使用
$compile
服务编译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); });
var-template=$compile($scope,function(clonedElement,scope){divElement.append(template);});

像这样将jQuery与AngularJS混合会带来问题。像这样将jQuery与AngularJS混合会带来问题。我已经注入了$compile,但知道我遇到了以下错误:未捕获错误:[ng:areq]你知道为什么吗?展示你的代码,你是如何注入
$compile
。一定是出了什么问题。Javascript:app.controller('Changectrl',function($scope,$compile,$http){}HTML:这看起来不错。我可以看到你粘贴的上面的错误与
$compile
无关。这是与作用域有关的。单击该错误,看看你在作用域上哪里做错了。也许你写的是
scope
,而不是$scope,但是如果我对你的解决方案的两行进行注释,错误就会消失。而且上面没有$scope。我已经输入了删除了$compile,但知道我收到了这个错误:未捕获错误:[ng:areq]你知道为什么吗?显示你的代码,你是如何注入
$compile
。一定是出了什么问题。Javascript:app.controller('Changectrl',function($scope,$compile,$http){}HTML:这看起来不错。我可以看到您粘贴的上述错误与
$compile
无关。这是与作用域有关的。单击该错误,查看您在作用域方面的错误。也许您编写了
scope
,而不是$scope,但如果我对解决方案的两行进行注释,错误就会消失。并且上面没有$scope。