Проверка нокаута и пространство имён
У меня проблемы с объединением пространства имен с проверкой нокаута. Это нарушает проверку:
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.