有没有办法以角度模式形式创建自定义字段类型,能够对表单上的其他字段求和?我查看了指令/装饰器,但不确定如何引用要求和的字段?
问问题
1193 次
1 回答
3
最简单的方法可能是让用户提供您想要总结的字段的键并使用$watchGroup
下面是一个表单定义的示例:
{
type: "sum",
sumFields: [
"key.to.field1",
"key.to.field2",
"key.to.field3"
]
}
然后你需要在你的字段类型 sum 中有一个指令来实际总结事情。(警告,未经测试的代码)
<div class="form-control-group">
<input disabled sum-it-up="form.sumFields" type="text">
</div>
angular.module('myModule').directive('sumItUp',function(){
return {
scope: true,
link: function(scope, element, attr) {
var keys = scope.$eval(attrs.sumItUp);.map(function(key){
// Whatever you put in model is always available on scope
// as model. Skipped ObjectPath for simplification.
return 'model.'+key
})
scope.$watchGroup(keys, function(values) {
element.value(values.reduce(function(sum, value){
return sum+value
},0))
})
}
}
})
您还可以做一个字段集类型的事情,并遍历items
表单属性中的每个项目,然后从那里开始。该sfSelect
服务也可能有用。希望有帮助!
于 2015-03-13T20:35:05.463 回答