Vil*_*ler 4 javascript angularjs
注意:我对angularjs很新
什么是问题的最佳解决方案/实践:我有一个数组或类型值,每种类型应该有不同的输入(模板和输入验证)?
例如并简化
var vars = [
{
type: 'int',
value: 42,
min: 0,
max: 42
},
{
type: 'text',
value: 'foobar'
},
]
Run Code Online (Sandbox Code Playgroud)
'int'模板将是
<input type="range" max="{{max}}" min="{{min}}" value="{{value}}" />
Run Code Online (Sandbox Code Playgroud)
并为'文本'
<textarea>{{value}}</textarea>
Run Code Online (Sandbox Code Playgroud)
在实际情况中,会有很多具有奇怪接口的输入
一个ng-switch(文档),可以在这里帮助你; 这样的事情:
<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>
Run Code Online (Sandbox Code Playgroud)
[更新]
由于您提到要根据类型动态包含模板,请查看ng-include(docs),其中Angular表达式将评估为URL:
<div ng-repeat="item in items">
<div ng-include="'input-' + item.type + '-template.htm'"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢内联字符串连接,可以使用控制器方法生成URL:
<div ng-repeat="item in items">
<div ng-include="templatePathForItem(item)"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
ngInclude文档页面上的示例非常好.
请注意,包含的模板将被赋予当前范围的原型子范围.
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |