jquery knockout.js requirejs knockout-validation

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"] } } });

http://www.requirejs.org/docs/api.html#config-shim