注意:我对 angularjs 很陌生
问题的最佳解决方案/实践是什么:
我有一个数组或键入的值,对于每种类型应该有不同的输入(模板和输入验证)?
例如。并简化
var vars = [
{
type: 'int',
value: 42,
min: 0,
max: 42
},
{
type: 'text',
value: 'foobar'
},
]
对于“int”模板将是
<input type="range" max="{{max}}" min="{{min}}" value="{{value}}" />
和“文本”
<textarea>{{value}}</textarea>
在实际情况下,会有很多带有奇怪界面的输入
An ng-switch
(docs)可以在这里帮助您;像这样的东西:
<div ng-repeat="item in items">
<div ng-switch on="item.type">
<div ng-switch-when="int">
<input type="range" max="{{item.max}}" min="{{item.min}}"
ng-model="item.value" />
</div>
<div ng-switch-when="text">
<textarea ng-model="item.value"></textarea>
</div>
</div>
</div>
[Update]
既然您提到要动态包含基于类型的模板,请看一下ng-include
(docs) 它采用 Angular 表达式来计算 URL:
<div ng-repeat="item in items">
<div ng-include="'input-' + item.type + '-template.htm'"></div>
</div>
如果您不喜欢内联字符串连接,可以使用控制器方法来生成 URL:
<div ng-repeat="item in items">
<div ng-include="templatePathForItem(item)"></div>
</div>
上的例子ngInclude
文档页面非常好。
请注意,包含的模板将被赋予当前范围的原型子范围。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)