jquery - Cómo cargar knockout.validation con knockout en requirejs
knockout.js knockout-validation (2)
Voy a definir mi modelo en require js y necesito el complemento de validación knockout y knockout en mi módulo y también jquery.
define(["knockout","jquery","knockout.validation"], function (ko,$,validation) {
// knockout model here with some knockout validation
return function SignUpViewModel() {
var self = this;
self.name = ko.observable();
self.email = ko.observable().extend({ required: true });
self.password = ko.observable().extend({
required: true,
minLength: 6
});
self.confirmPassword = ko.observable().extend({ mustEqual: self.password() });
self.company = ko.observable();
self.availableCountries = ko.observableArray([''Pakistan'', ''USA'', ''Egypt'', ''UAE'']);
self.selectedCountry = ko.observable();
self.errors = ko.validation.group(self);
}
});
Pero cuando ejecuto esto, recibí el siguiente error.
Uncaught ReferenceError: ko is not defined
También trato de depurar y descubrí que todas las demás bibliotecas jquery
, jquery
se cargan perfectamente.
y aquí está mi porción de configuración
require.config({
baseUrl: "/Scripts",
paths: {
"Signup" : "Signup",
"knockout": "knockout-2.3.0",
"knockout.validation": "knockout.validation",
"jquery": "require-jquery"
}
});
Tu modelo funciona bien conmigo, aquí está mi configuración requerida:
requirejs.config({
baseUrl: ''/Scripts'',
paths: {
''jquery'': ''jquery-1.9.1.min'',
''knockout'' : ''knockout-2.3.0'',
}
});
// myModel.js is the file containing your model code.
require( ["myModel", "knockout"], function(model, ko){
ko.applyBindings(new model());
});
myModel.js
define(["knockout","jquery","knockout.validation"], function (ko,$,validation) {
// knockout model here with some knockout validation
return function SignUpViewModel() {
var self = this;
self.name = ko.observable();
self.email = ko.observable().extend({ required: true });
self.password = ko.observable().extend({
required: true,
minLength: 6
});
self.confirmPassword = ko.observable().extend({ mustEqual: self.password() });
self.company = ko.observable();
self.availableCountries = ko.observableArray([''Pakistan'', ''USA'', ''Egypt'', ''UAE'']);
self.selectedCountry = ko.observable();
self.errors = ko.validation.group(self);
};
});
y ya no necesita require-jquery
, ya que jQuery define el nombre del módulo AMD ''jquery'' (en minúsculas) cuando detecta AMD / RequireJS.
require.config({
baseUrl: "/Scripts",
paths: {
"Signup": "Signup",
"knockout": "knockout-2.3.0",
"knockout.validation": "knockout.validation",
"jquery": "require-jquery"
},
shim: {
"knockout.validation": {
"deps": ["knockout"]
}
}
});