动态attr in textbox data-bind knockout JS

时间:2016-06-20 12:52:47

标签: jquery knockout.js

我需要在textbox data-bind

中添加动态attr
<input class="form-control" type="text" data-bind="
  attr:{
    name:$data.FieldName, 
    req: !$data.Nullable, 
    placeholder:$data.DefValue, 
    disabled:$data.Editable != null && !$data.Editable == true, 
    required: $data.Nullable != null && !$data.Nullable, 
    'data-bv-notempty':$data['data-bv-notempty'], 
    'data-bv-notempty-message': $data['data-bv-notempty-message']
  }, 
  value: $root.selScreen.isEditMode() ? ActualData : ''
">

如果我在列表下面的数组中定义那么它应该添加

'data-bv-notempty': $data['data-bv-notempty'], 
'data-bv-notempty-message': $data['data-bv-notempty-message']

OR

'data-bv-notempty':'true', 
'data-bv-notempty-message': 'This field can not be empty'
明智的

'data-bv-regexp':'true',
'data-bv-regexp-regexp':''^\d*'',
'data-bv-regexp-message': 'This field can only consist of integer value'

我在Array中添加的内容应该添加到

data-bind="attr:{
  'data-bv-regexp':'true',
  'data-bv-regexp-regexp':''^\d*'',
  'data-bv-regexp-message': 'This field can only consist of integer value'
}"

不想使用jQuery或Observable对象

1 个答案:

答案 0 :(得分:0)

  

不想使用jQuery或Observable对象

您发布了包含标记的问题,但您不想使用jQuery或observables?

我对你的问题的解释(如果我错了,请纠正我):

  

如何使用视图 viewmodel 中定义的属性组合来使用attr绑定?

例如,在根视图模型中有一些默认值:

this.defaultAttributes = {
  'data-bv-notempty':'true'
};

您希望在视图中添加这些默认值,同时还可以添加特定属性:

<div data-bind="attr: {
    id: 'item-' + $index()
  }">
</div>

我建议您使用Object.assign合并两者:

<div data-bind="attr: Object.assign({
    id: 'item-' + $index()
  }, $root.defaultAttributes)">
</div>