Knockout.js中foreach内的绑定不起作用

qvk1mo1f  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(114)

我必须迭代一个动态数组,构建一个表单并对其进行验证。我确实定义了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中正确调用它。

gk7wooem

gk7wooem1#

假设我的基本结构是正确的,我认为问题是$parent实际上与methToChange的父对象相关,而不是nameTranslations的父对象。
第一个

wqsoz72f

wqsoz72f2#

最后,我在主级别上定义了一个名为ntError的var,并使用$root.ntError()来调用它。

相关问题