当前位置: 首页 > 面试题库 >

由ng-repeat驱动的AngularJS ng-model形式超过UI模型描述数据?

张鸿志
2023-03-14
问题内容

JSFiddle
http://jsfiddle.net/vorburger/hyCTA/3/展示了我对AngularJS的(有效的)“
UI建模”想法;请注意,表单实际上并未在HTML模板中编码出来,而是由uimodel JSON驱动的(反过来描述了如何呈现/编辑数据模型):

<div ng-repeat="auimodel in uimodel">
    <label>{{$index + 1}}. {{auimodel.label}}</label>
    <input ng-model="datamodel[auimodel.model]" type="{{auimodel.type}}" />
</div>

麻烦的是,只要我的“模范”不是一个简单的属性,而是一个“路径”,然后我的括号动态密钥“绝招”已经不当然的工作..按如图所示(碎)HTTP:
//jsfiddle.net/vorburger/8CxRC/1/
JSFiddle。有什么建议可以做到这一点吗?

PS:或者像这样的事情一定需要一个完整的自定义指令,而不是早于晚吗?如果可能的话,我宁愿不必这样做,以使创建和维护此类UI模型“元模板”尽可能简单…


问题答案:

我刚刚想出一种(但可能不是最好的方法)自己实现此目的。.参见http://jsfiddle.net/vorburger/8CxRC/3/-基本上仍基于我的方括号动态键“技巧”
‘,但需要进行一些预处理:

   for (var i = 0; i < $scope.uimodel.length; i++) {
        var resolvedModelProperty = $scope.datamodel;
        var remainingPath = $scope.uimodel[i].model;
        while (remainingPath.indexOf('.') > -1) {
            var nextPathSlice = remainingPath.substr(0, remainingPath.indexOf('.'));
            resolvedModelProperty = resolvedModelProperty[nextPathSlice];
            remainingPath = remainingPath.substr(remainingPath.indexOf('.') + 1);
        }
        $scope.uimodel[i].modelB = resolvedModelProperty;
        $scope.uimodel[i].modelL = remainingPath;
    }


 类似资料:
  • 问题内容: 我正在尝试使用ng-repeat生成表单输入。注意:’customFields’是字段名称的数组:[“ Age”,“ Weight”,“ Ethnicity”]。 设置“ ng-model”的最佳/正确方法是什么?我想将它作为 person.customfields.’fieldname’ 发送到服务器,其中fieldname来自’customFields中的field’。 问题答案:

  • 问题内容: 我有一个AngularJS表单,我在其中使用ng-repeat根据另一个选择动态地构建表单的字段。我正在尝试动态生成模型名称,并且遇到了问题。 我需要的是评估为ng-model =“ formData.parameters.fooId”或ng-model =“ formData.parameters.barId” 上面的结果导致错误:错误:[$ parse:syntax]语法错误:标记

  • 对此,作者提出了建议

  • 问题内容: 这是我不工作的演示 模型保持不变。如何同步?请注意,数据结构很重要。 问题答案: 的结合将评估在当前范围的表达。作为创建一个子范围,这意味着将寻找一个命名属性的子范畴。在您的示例中,我们希望它在 父 范围内查找属性,该属性的别名为。 这是设计使然,可以通过引用表达式中的父范围来避免这种情况。 工作演示 代码(注意输入元素上的绑定已更改): 当您使用Angular 1.3的Beta版时,

  • 问题内容: 如果我的措词不正确,我事先表示歉意。我在的内部有一个文本框,当我尝试获取文本框值时始终为。我只希望它显示我在相应文本框中键入的内容。 似乎是一个问题,那么我该如何创建全局或控制器根级别以便可以访问它? 这是帮助解决问题的JSFiddle:http : //jsfiddle.net/stevenng/9mx9B/14/ 问题答案: 在您的点击表达式中,您可以引用并在您的函数中对其进行访问

  • 问题内容: 我想创建一个models.Model类,它不成为数据库的一部分,而只是其他模型的接口(我想避免重复代码)。 像这样: 因此,我的数据库应仅具有Foo(具有a,b,c列)和Bar(具有a,b,d),而不应具有表Interface。 问题答案: “抽象基类” 当您要将一些公共信息放入许多其他模型时,抽象基类很有用。您编写基类并放入Meta类。然后,将不会使用该模型来创建任何数据库表。相反,