1

我正在使用 ui-grid 开发 AngularJS。在网格中,当我编辑一行时,我正在打开这样的模式窗口

$scope.editRow = function(row){     
    var modalInstance = $modal.open({
        templateUrl : contextPath+ '/row/edit',
        controller : 'EditController',
        size : 'lg',
        scope: $scope,
        resolve : {
            result : function() {
                return row;
            }
        }
    }); 
    modalInstance.result.then(function() {
    .......
    });
}

调用 Editcontroller 默认函数后,模型窗口会打开并显示行详细信息。到目前为止,它工作正常。现在我正在尝试使用 AngularUI 对打开的模式窗口进行验证,但验证不起作用。下面是我的 UI 页面,其中验证不起作用

<div class="modal-content">
<div class="modal-header">      
    <h4 class="modal-title"></h4>
    <h3 align="center">Edit Row Details</h3>
</div>

<div class="modal-body">
    <form class="form-horizontal" name="myform" ng-submit="submitForm(myform.$valid)" novalidate>
            <!-- Content Start -->
            <div class="container">
                <div class="row">
                        <div class="form-group required"
                            ng-class="{ 'has-error' : myform.name.$invalid && !myform.name.$pristine }">
                            <label for="name" class="control-label"> Name
                            </label>
                            <div>
                                <input type="text" name="myform.name" class="form-control input-sm"
                                    ng-model="myform.name" placeholder="Name"
                                     required />
                                     <p ng-show="myform.name.$invalid && !myform.name.$pristine" class="help-block"> Name is required.</p>

                            </div>
                        </div>
                </div>
                <div class="row">
                        <div class="form-group">
                            <div>
                                <button type="submit" ng-model="myform.save"  ng-disabled="myform.$invalid"
                                    class="btn btn-primary" ng-click="edit(myform)">EDIT</button>
                            </div>
                        </div>
                </div>
            </div>
                <!-- Content End -->
    </form>
</div>

有人请帮助我如何进行验证。还有一件事,如果我正常打开模式窗口,验证正在工作,但我在编辑行时遇到问题。我认为这是一个范围问题,子范围没有绑定。你的帮助是非常可观的。

4

2 回答 2

0

您不需要在输入名称中包含表单名称,它位于表单中,因此输入已经绑定到该表单。我还建议将您的 ng-model 绑定到您范围内的另一个对象(下面我使用了模型)而不是表单本身。

你会这样写。

<div class="row">
   <div class="form-group required"
        ng-class="{ 'has-error' : myform.name.$invalid && !myform.name.$pristine }">
         <label for="name" class="control-label"> Name </label>
         <div>
              <input type="text" name="name" class="form-control input-sm"
                                ng-model="model.name" placeholder="Name"
                                 required />
               <p ng-show="myform.name.$invalid && !myform.name.$pristine" class="help-block"> Name is required.</p>

                      </div>
                    </div>
            </div>

另外我会将 ng-submit 更改为以下

<form class="form-horizontal" name="myform" ng-submit="myform.$valid && submitForm()" novalidate>

于 2016-03-21T14:06:31.377 回答
0

最后,我能够找到解决方案

在 EditController 添加下面的代码

$scope.form={};

你的表格应该有 form.myform 像这样

<div class="modal-content">
<div class="modal-header">
    <h4 class="modal-title"></h4>
    <h3 align="center">Edit Row Details</h3>
</div>

<div class="modal-body">
    <form class="form-horizontal" name="form.myform"
        ng-submit="submitForm(form.myform.$valid)" novalidate>
        <!-- Content Start -->
    <div class="container">
        <div class="row">
        <div class="form-group required"
            ng-class="{ 'has-error' : form.myform.name.$invalid && !form.myform.name.$pristine }">
            <label for="name" class="control-label"> Name </label>
            <div>
                <input type="text" name="myform.name"
                    class="form-control input-sm" ng-model="myform.name"
                    placeholder="Name" required />
                <p  ng-show="form.myform.name.$invalid && !form.myform.name.$pristine"
                    class="help-block">Name is required.</p>

            </div>
            </div>
        </div>
    <div class="row">
        <div class="form-group">
            <div>
            <button type="submit" ng-model="myform.save" ng-disabled="form.myform.$invalid" class="btn btn-primary"
                    ng-click="edit(myform)">EDIT</button>
            </div>
        </div>
    </div>
</div>
    <!-- Content End -->
</form>
</div>

我发布这个是因为它可能对某人有帮助..

于 2016-04-11T11:28:20.653 回答