Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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 将表单设置为$pristine,但保留当前值_Javascript_Angularjs - Fatal编程技术网

Javascript 将表单设置为$pristine,但保留当前值

Javascript 将表单设置为$pristine,但保留当前值,javascript,angularjs,Javascript,Angularjs,我的用例是,我需要根据用户是否更改了表单的值来启用/禁用保存按钮 当用户单击save按钮(进行更改后)时,将进行AJAX保存,完成后,表单需要再次被视为“原始”,但保留当前值 我想设置表单。$pristine=true会起作用,它在单击按钮后第一次这样做,但是编辑那里的值不会将$pristine设置为false 示例plunker: 提交 Form pristine:{{submitForm.$pristine}} //内部控制器 $scope.saveForm=函数(){ $scope.su

我的用例是,我需要根据用户是否更改了表单的值来启用/禁用保存按钮

当用户单击save按钮(进行更改后)时,将进行AJAX保存,完成后,表单需要再次被视为“原始”,但保留当前值

我想设置
表单。$pristine=true
会起作用,它在单击按钮后第一次这样做,但是编辑那里的值不会将
$pristine
设置为false

示例plunker:


提交
Form pristine:{{submitForm.$pristine}}
//内部控制器
$scope.saveForm=函数(){
$scope.submitForm.$pristine=true;
}
  • 还有别的办法吗
  • 如果没有,我需要做什么才能让它工作
  • FormController.$setPristine()

    将窗体设置为原始状态

    可以调用此方法删除“ng dirty”类并将窗体设置为其原始状态(ng pristine类)。此方法还将传播到此表单中包含的所有控件

    当我们希望在保存或重置表单后“重用”表单时,将表单设置回原始状态通常很有用


    我建议在表单标签上使用ng submit,而不是使用ng click。ng submit确保在调用ng submit的事件处理程序之前提交所有viewmodel更改。这将特别适用于在ng模型中使用ng选项的情况,您可能已将选项设置为仅在特定时间或onblur后更新模型

    您还可以在提交标记时将表单的值设置为pristine,如下所示

    这是更新后的代码和plunker。请注意,如果表单无效,将不会调用ng submit。这是使用ng submit而不是ng click的另一个优点

      <form name="submitForm" ng-submit="saveForm();submitForm.$setPristine();">
          <input ng-model="data.first" type="text" />
          <input ng-model="data.second" type="text" />
           <button >Submit</button>
        </form>
    
    
    提交
    

    您是否尝试过使用
    $setPristine()
    而不是
    $pristine
    ?将值重置为初始值,不是吗?我误解了它的意思,所有示例都显示它将窗体重置为其原始状态。谢谢谢谢你,维尼。我理解为什么ng submit更好,但我的设置包括多个按钮,不一定涉及表单。感谢您的反馈Devin。没有意识到您正在使用多个按钮。很高兴你找到了答案。
      <form name="submitForm" ng-submit="saveForm();submitForm.$setPristine();">
          <input ng-model="data.first" type="text" />
          <input ng-model="data.second" type="text" />
           <button >Submit</button>
        </form>