Проверка нокаута и пространство имён

У меня проблемы с объединением пространства имен с проверкой нокаута. Это нарушает проверку:

myNameSpace = {
    viewModel: {
        name: ko.observable().extend({ digit: { digit: true, message: "digits only"} })
    }
};
ko.validation.init({});
ko.applyBindings(myNameSpace);

В отличие от:

myNameSpace = {
    viewModel: {
        name: ko.observable().extend({ digit: { digit: true, message: "digits only"} })
    }
};
ko.validation.init({});
ko.applyBindings(myNameSpace.viewModel);

Который работает отлично.

Кто-нибудь может объяснить мне разницу?

1 ответ

Это о существовании объектов и свойств. Возможно, у вас были привязки к свойству name. Если вы делаете ko.applyBindings(myNameSpace); ko ищет свойство "name" в объекте myNameSpace. Этого не существует.

Когда вы связываете его с помощью ko.applyBindings(myNameSpace.viewModel);, он ищет имя в объекте модели представления. Он находит его, и поэтому может привязываться к свойству или наблюдаемым.

В первом случае, однако, если бы вы использовали привязку данных со значением "value: viewModel.name", это сработало бы, потому что было бы искать свойство name свойства viewModel объекта myNameSpace.

Другие вопросы по тегам