使用ngModelCtrl和输入

时间:2013-11-21 07:11:59

标签: angularjs angularjs-directive

我一直在努力解决如何正确使用ngModelCtrl的问题。

首先,我有一个基于属性列表生成表单的指令。所以我可能有一个实体的属性列表:

[{
    "name": "name",
    "type": "Text",
    "validation": {
        "minLength": 1,
        "maxLength": 20
    }
},
{
    "name": "role",
    "type": "Entity",
    "entity": "Role",
    "validation": {
        "required": true
    }
}]

(如果你熟悉Breeze,这与它的metadata类似,我们很快就会迁移到它,最近发现了它)

使用表单指令生成表单,例如<foo-form ng-model="user" properties="properties"></foo-form>properties就是上面的表单。

这个fooForm指令基本上遍历这些属性并委托给另一个名为fooPropertyInput的指令。用法为<foo-property-input ng-model="user.name" property="property"></foo-property-input>

fooPropertyInput的责任是使用property对象根据属性中的type显示适当的输入。因此,如果它是文本,则应显示<input type="text" ng-model="model"...或类型为Entity,<foo-entity ng-model="model"...等。最终目标是正确验证,并以fooForm中定义的形式反映(或者任何其他父表格,如果在fooForm之外使用的话。)

我无法理解如何将ngModel及相关属性传递给最终输入元素。

我已经做了大量的搜索如何以这种方式使用ngModel,但大多数事情都是使用隔离范围,我最初认为这不是与ngModelCtrl一起使用的最佳做法。

任何指针?感谢

编辑: 仍在寻找答案,我根据要求创建了一个Plunker,并附有一些评论:http://plnkr.co/edit/m8th6GNq4CBoFytmkSN0?p=preview

另外,我有一个额外的想法,如果我将每个类型分成它自己的指令(而不是在模板中包含所有内容),并且需要主要的propertyInput控制器,那么更容易实现吗?无论哪种方式,我想我仍然不知道如何链接到HTML输入的ngModel(参见Plunker评论)。

0 个答案:

没有答案