我必须迭代一个动态数组,构建一个表单并对其进行验证。我确实定义了error属性,但我得到了一个错误,显示为"object doesn't support property or method 'error'
,我相信这是由标记触发的。我有一堆其他的非数组属性,它们以相同的方式进行验证,没有问题,我只是遇到了数组属性的绑定错误问题。
所以在我的html中
<tbody data-bind="foreach: methToChange.nameTranslations">
<tr>
<td><div class="method-lb-1"><label data-bind="text:LangName"></label></div></td>
<td><div class="method-left">
<input type="text" class="input-xl" maxlength="40" placeholder="required"
onblur="validateNameTranslations()"
data-bind="value:Translation, css: { 'methods-border-error': $parent.error() }" />
</div>
</td>
</tr>
</tbody>
在js中,我有以下模型
nameTranslations是一个对象数组{LangName,Translation}
methToChange: {
//many other properties
nameTranslations: ko.observableArray([])
},
稍后,我初始化该值并创建可观察到的错误,然后更新数组
init: function() {
model.methToChange.nameTranslations.error = ko.observable(false);
}
update: function() {
var model = model.methToChange;
model.nameTranslations(item.NameTranslations);
},
css: { 'methods-border-error': $parent.error() }" this part causes an issue and throws an error saying that error property is undefined.
nameTranslations
数组的定义与其他非数组字段的定义顺序相同,我的直觉是我没有在foreach
中正确调用它。
2条答案
按热度按时间gk7wooem1#
假设我的基本结构是正确的,我认为问题是$parent实际上与
methToChange
的父对象相关,而不是nameTranslations
的父对象。第一个
wqsoz72f2#
最后,我在主级别上定义了一个名为ntError的var,并使用
$root.ntError()
来调用它。