【问题标题】:how to make view (form)from json using angular?如何使用角度从json制作视图(表单)?
【发布时间】:2014-10-02 18:51:06
【问题描述】:

我正在尝试从 json 中创建视图。当我有对象数组时。我能够创建视图并验证该视图。 如果我有这个对象数组,在这种情况下,我可以查看, 检查plunker http://plnkr.co/edit/eD4OZ8nqETBACpSMQ7Tm?p=preview

[{
            type: "email",
            name: "email",
            required:true
        }, {
            type: "text",
            name: "name",
            required:true
        }, {
            type: "number",
            name: "phonenumber",
            required:true
        }, {
            type: "checkbox",
            name: "whant to check"
        },
            {
                type: "url",
                name: "server Url"
            }];

现在问题发生在我有 json 对象时。我需要从 json 对象显示视图。我不知道从哪里开始工作 我有这个json

  • "displayName":显示来自输入文本的标签名称 字段。
  • inputValues :表示tmput填充的类型。如果是数字则 用户只填写数字,文本然后用户只填写数字,然后发送电子邮件 用户填写电子邮件,如果它切换然后它是下拉给定的 选项。
  • "required" 给出字段是否为必填项?

【问题讨论】:

  • 你能改变那个 Json 吗?还是你无法控制?
  • 不,我不想更改 json ..我们可以使用这些插件吗?github.com/danhunsaker/angular-dynamic-forms
  • @Fedaykin json 已修复。使用该 json 我需要制作自己的 json 对象,然后用于制作视图

标签: javascript jquery angularjs angularjs-directive


【解决方案1】:

假设您的JSON 来自配置文件或服务,您可以从获取JSON 作为JSON 对象开始:

angular.module('myapp', [])
  .controller('MyController', ['$scope', function($scope) {

    $scope.outputs = {};
    $scope.rawInput = JSON.parse( '{"studentName": "abc", \
        "input": {\
            "loginUser": {\
                "displayDetail": "UserId for login.",\
                "displayName": "Login User Id*",\
                "inputType": "TEXT",\

(我不得不转义返回以允许解析漂亮打印的 JSON 字符串)

一旦你有了它,你就快到了。现在您可以达到您需要的JSON 级别并构建您的inputs 数组:

$scope.formInputs = $scope.rawInput['input'];
$scope.inputs = [];

angular.forEach($scope.formInputs, function(value, key) {
/* do something for all key: value pairs */
  $scope.inputs.push({"type":value.inputType.toLowerCase(),"name":value.name,"required": value.required})
});

请注意,您可能应该在此处进行一些错误检查 - 出于本示例的目的,我没有使用任何错误检查。 Here 是一个演示此代码的工作 plnkr。

我还没有完成所有工作 - 您必须构建您的选择或单选按钮输入,但我认为您应该能够从这里获取它。

编辑我已经取消了 plnkr 的日期以将其公开

【讨论】:

  • plunker 不工作请检查 ..link is not open
  • 第二个问题?使用这个插件github.com/danhunsaker/angular-dynamic-forms.because 很好,我需要验证我的表单。我有大约 40 个 json 文件,所以我需要创建 40 个表单,所以我可以使用你的解决方案或这个插件进行验证
  • 请检查这个插件plnkr.co/edit/UF6vPoeUFn3FndFKQ1y0?p=preview。我使用了插件,但它不会显示..
  • 嗯不确定验证。我在 github 项目中看不到它。不幸的是,我没有更多的时间来研究这个问题,抱歉。我想说您可以在我的示例中使用 javascript 创建方法。但我不确定,抱歉。
猜你喜欢
  • 1970-01-01
  • 2016-04-21
  • 2014-11-22
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
相关资源
最近更新 更多