Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 表单不是从带有角度的rest响应填充的_Javascript_Angularjs_Forms_Checkbox - Fatal编程技术网

Javascript 表单不是从带有角度的rest响应填充的

Javascript 表单不是从带有角度的rest响应填充的,javascript,angularjs,forms,checkbox,Javascript,Angularjs,Forms,Checkbox,我对AngularJS是新来的,对此我有点困惑。我必须做一个带有一些配置选项的页面,我想保存这些选项,当我再次打开页面时,输入必须用保存的值填充。我有一个复选框,当它的值为false时,所有其他字段都被禁用。我做了保存,它工作了,但是当我加载页面之后,输入被禁用并且为空。我在ng init上执行GET请求,然后设置每个输入的范围变量。它们保持禁用状态,即使响应将该复选框的ng模型设置为true,该复选框也未选中。检查的ng相同,不可见。当我选中复选框时,这些值会神奇地显示在正确的值中。这是htm

我对AngularJS是新来的,对此我有点困惑。我必须做一个带有一些配置选项的页面,我想保存这些选项,当我再次打开页面时,输入必须用保存的值填充。我有一个复选框,当它的值为false时,所有其他字段都被禁用。我做了保存,它工作了,但是当我加载页面之后,输入被禁用并且为空。我在ng init上执行GET请求,然后设置每个输入的范围变量。它们保持禁用状态,即使响应将该复选框的ng模型设置为true,该复选框也未选中。检查的ng相同,不可见。当我选中复选框时,这些值会神奇地显示在正确的值中。这是html

<div ng-controller="archivingController" ng-init="getArchivingOptions()">
<form name="archivingForm" ng-submit="saveConfiguration()" novalidate>
    <div id="archivingFormEnable">
        <input type="checkbox" class="checkbox" ng-model="configurations.enableArchiving"/>
        <label id="archivingLabelEnable">Enable Archiving</label>
    </div>
    <fieldset>
        <legend>Archiving Settings</legend>
        <div id="globalArchivingDiv">
            <label id="globalArchivingLabel" style="width: 240px">Global archiving:</label>
            <select ng-init="configurations.globalArchiving='disabled'" ng-model="configurations.globalArchiving" ng-disabled="!configurations.enableArchiving">
                <option value="disabled">Disabled</option>
                <option value="enabled">Enabled</option>
            </select>
        </div>
        <div id="archiveFolderDiv">
            <label id="archiveFolderLabel">Archive folder:</label>
            <input type="text" ng-disabled="!configurations.enableFileArchiving" ng-model="configurations.archiveFolder" required/>
            <span ng-show="fileArchivingForm.archiveFolder.$invalid && configurations.enableFileArchiving">Required.</span>
        </div>
    </fieldset>
    <button id="save" ng-disabled="fileArchivingForm.$invalid && configurations.enableFileArchiving">Save</button>
</form>
</div>
事实上,我确信所有这些都设置好了,因为当我打电话时
console.log($scope.configurations.archiveFolder)打印的值与响应中的值相同。问题是,在我单击复选框之前,它是不可见的。我不知道该怎么办。我愿意听取建议。提前感谢。

如果使用jquery的$.ajax而不是angular的$http,则需要将回调封装在$scope中。$apply:

"success": function(data) {
   $scope.$apply(function() {
       //your code here
   });
}

为什么要使用$.ajax而不是$http?过去使用http有一些问题,但我也会尝试使用http。谢谢。它与$http一起工作。它的问题是在使用IE9/10时,但是由于MS放弃了支持,我会的。现在的问题是,只有复选框没有更新。该值是正确的,但明显未选中。复选框中没有复选框。我尝试了$http,它可以工作。我们对它和IE9/10有问题,但现在由于MS放弃了对它们的支持,我可以使用$http。现在,除了一个复选框外,所有输入都已填充。当我加载页面时,我没有选中,但是其他输入没有被禁用,并且它们是正确的。非常感谢。
"success": function(data) {
   $scope.$apply(function() {
       //your code here
   });
}