本文介绍了小号:复选框fieldValue方法的验证总是如此前提交的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Struts 2 < S:复选框/> 在我的表格处理,与AngularJS和jQuery一起。
结果
在提交之前,我需要验证和到现在为止我们做这个项目:

当我们preSS提交按钮,这个功能叫做:

$ scope.processForm('myForm的','< S:url值=/表格/ validate.action />',
                             '< S:url值=/表格/ save.action/>');

,其中 processForm(formId,validateUrl,submitUrl)是我们定义的函数:

$ scope.processForm =功能(表单,validateUrl,submitUrl){
    window.scroll(0,0);
    ProccessFormService.processStandarForm(形式,validateUrl,submitUrl);
};

,此外,我们有 processStandarForm()在一个全球性的服务定义的:

angular.module('ourApp')。控制器('myFormCtrl',
                                    功能($范围,$莫代尔,ProccessFormService){
...
}

在服务:

(函数(){
    angular.module('ourApp')。工厂('ProccessFormService',['$ HTTP',函数($ HTTP){    processStandarForm:功能(表单,validateUrl,submitUrl){
        this.processForm(形式,validateUrl,submitUrl);
    },    processForm:功能(表单,validateUrl,submitUrl,成功){        如果((typeof运算形式)=='串'){
            表=的document.getElementById(表);
        }        VAR数据= this.form2Object(表);
        VAR CTRL =这一点;        如果(数据){
            如果(validateUrl){
                $ HTTP({
                    方法:POST,
                    网址:validateUrl,
                    数据:$ .PARAM(数据),//传递数据串
                    标题:{内容类型:应用程序/ x-WWW的形式urlen codeD'}
         //设置页眉所以角传递信息的表格数据(而不是请求负载)
                })。成功(函数(){
                    如果(!成功){
                        form.action = submitUrl;
                        form.submit();
                    }其他{
                        ctrl.submitAjaxForm(submitUrl,数据,成功)
                    }
                });
            }否则如果(submitUrl){
                如果(!成功){
                    form.action = submitUrl;
                    form.submit();
                }其他{
                    this.submitAjaxForm(submitUrl,数据,成功)
                }
            }
        }
    },
}

基本上,我们两次提交表单,先进行验证,然后提交。

我不明白的是,如果我在调试动作类,在功能的validate()的布尔值< S:复选框/> 永远是正确的,但在提交()函数,布尔值正确提交,根据。他们检查/未检查 Checkboxs是这样的:

< D​​IV CLASS =COL-SM-12表格,勾选>
     < S:复选框名称=myForm.married
             NG-模式=checkboxModel
                值=< S:属性值='%{} myForm.married/>中
            NG-变化=submitCheckbox();
              NG-的init =checkboxModel =%{} myForm.married
                主题=简单
          NG-禁用=anotherFunction()/>
< / DIV>

我的理解是,提交的值 fieldValue方法=XXX< S:复选框/> ,并且默认为true。所以,我这样做是为了改变 fieldValue方法每个复选框加载页面之前。虽然所有的脚本执行,没有什么改变。我仍然得到所有真正的验证。

$(文件)。就绪(函数(){
    $(输入:复选框)。每个(函数(){
        VAR复选框= $(本);
        VAR检查= checkbox.prop(选中); //血清假/真
        如果(检查==真){
            checkbox.prop(fieldValue方法,真);
        }其他{
            checkbox.prop(fieldValue方法,假);
        }
    });
});

所以,我怎样才能得到正确的布尔值不仅在提交,而且在验证?是角服务写错了?我真的很怀疑,但我无法弄清楚的问题。


解决方案

怀疑数据没有正确序列化与角 $ HTTP使用( )

如果你想模仿 $参数()在使用jQuery的你应该使用内置串行的。

 

Another ways to convert from $.param to angular you can find in Convert $.param in angularjs

这篇关于小号:复选框fieldValue方法的验证总是如此前提交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-21 11:55