【问题标题】:How to mark a form as "Dirty" using form name in angularjs?如何使用angularjs中的表单名称将表单标记为“脏”?
【发布时间】:2016-10-14 13:55:23
【问题描述】:

我正在尝试在表单中动态添加一些 html 元素。当我单击一个按钮时,这些元素会正确添加到该 html 表单中。下面是我的 html 表单声明。

<div ng-cloak ng-form="" name="jobEntryForm" id="jobEntryForm" job-entry-layout confirm-on-exit ng-hide="vm.showEstimateContacts">
<!-- other elements here-->
</div>

在这个div 中,我添加了如下动态html 元素:

<div class="col-md-2 pull-left ">
  <div ng-include="'/App/Job/Entry/tasksMenuButton.html'"></div>
</div>

虽然tasksMenuButton.html里面的html元素是动态添加的,但是它们不属于任何指令。这个tasksMenuButton.html 也有一些使用ng-include 指令添加的动态元素(即寄售任务)。现在为了处理寄售任务的功能,我创建了单独的控制器(即 consignmentTask.controller.ts)。现在我想要的是从这个控制器内部将表单 jobEntryForm 设置为脏。但我无法访问表格。控制器没有任何属性来保存表单。下面是作用域界面:

export interface IConsigmentTaskScope extends ng.IScope {
        task: IConsignmentTask;
        contactEntryModalInstance: ModalServiceInstance;
        serviceListModalInstance: ModalServiceInstance;
        messageModalInstance: ModalServiceInstance;
    }

如何在此 (consignmentTask.controller.ts) 控制器中获取表单 jobEntryForm 并使其变脏?

** 我尝试使用 id/class 获取表单元素,但该元素包含一个表单属性为 null。

【问题讨论】:

  • 您为什么要手动将表单标记为脏?通常你让表单元素更新表单的脏和有效性。
  • @BryanEuton 在我的 consignmentTask.html 页面中,我有一个下拉列表来填充一些服务信息。每当我选择/更改任何服务时,我都想将表单标记为脏,以便用户意识到需要保存该表单。
  • 尝试为 ngform 命名。我不在电脑前检查这个,但我认为这就是为什么当您更改选择时它不会自动为您工作。如果这不起作用,请发布带有问题选择的 sn-p 的 html。

标签: html angularjs forms typescript


【解决方案1】:

您可以在范围上定义jobEntryForm

export interface IConsigmentTaskScope extends ng.IScope {
    task: IConsignmentTask;
    contactEntryModalInstance: ModalServiceInstance;
    serviceListModalInstance: ModalServiceInstance;
    messageModalInstance: ModalServiceInstance;
    jobEntryForm: ng.IFormController
}

然后拨打$scope.jobEntryForm.$setDirty()

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多