1

我正在从 json 制作一个表单。我在tv4.js中使用具有依赖性的angular-schema-form。我从这个 https://github.com/Textalk/angular-schema-form/blob/master/docs/index学习.md#global-options 我们可以在元素上应用 onchange 。但是当我应用它时不调用它也没有给出任何错误,为什么?Plunker http://plnkr.co/edit/wbziK5aRUg69JuwXDoVy?p=preview

onChange: function(modelValue,form) {
      console.log("Password is",modelValue);
    }

我是这样用的

"email": {
            "title": "Email",
            "type": "string",
            "minLength": 2,
            "pattern": "^\\S+@\\S+$",
            onChange: function(modelValue,form) {
      console.log("Password is"+modelValue);
          },
            validationMessage: {
              200: "Address is too short, man.",
              "default": "Just write a proper address, will you?" //Special catch all error message
            },
            "description": "Email will be used for evil.",
            required: true
          },

装订有问题吗?

4

2 回答 2

1

您在错误的地方添加了 onChange。它不应该是模式,而是形式。检查这个http://plnkr.co/edit/h02XKqF3Vc6eefTOEN8m?p=preview

 $scope.form = [
        "name",
        "student",
        {
          key: "email",
          onChange: function(modelValue, form) {
            console.log("email changed");
            console.debug(modelValue);
            console.debug(form);
          }
        },
        "title",
        {
          type: "submit",
          title: "Save"
        }
      ];

尽管在您输入有效值之前不会触发电子邮件字段事件。不确定它是否应该这样工作。

您还缺少 angular-schema-form 标记,因为此问题与该特定库有关。

BR

于 2014-09-30T08:28:26.780 回答
1

我查看了 sfChanged 指令。很遗憾...

我不想花很多时间来绑定一个更改事件。也许这个工具并不严重......

要插入更改事件逻辑,请在您的 html 表单对象上确保:

ng-model (add to sf-model, sf-schema, sf-form)

绑定在模型窗体上,例如:

ng-model="modelForm" (sf-Model="modelForm")

在您的 HTML 表单对象上,确保该sf-changed属性使用以下语法存在:

sf-changed="onChange"

在模式对象上,对于要绑定更改事件的键,请编写:

{
  key: "yourkey",
  ...blabla...waouou...
  x-schema-form: {
    onChange: function () { console.log('now it runs'); }
 }  
}

我调试了 sfChanged 指令,现在触发了您的更改事件。

仅在表单对象上无法识别您的更改事件。

'on blur option' 个人运行,我发现了这个工具,我哭了“为什么是我?” “为什么这么讨厌?”

文档有一个大漏洞,祝你有美好的一天。

于 2016-03-03T09:16:28.180 回答