2013-08-06 20 views
5

Mam zamiar zdefiniować mój model w wymaganiu js i potrzebuję knockout i knockout validation plugin w moim module, a także jquery.Jak załadować nokaut.waluacji z nokautem w requirejs

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

Ale po uruchomieniu tego otrzymałem następujący błąd.

Uncaught ReferenceError: ko is not defined 

Staram się też do debugowania i okazało się, że wszystkie inne biblioteki knockout, jquery są doskonale ładowania.

i tu jest mój config część

require.config({ 
    baseUrl: "/Scripts", 
    paths: { 
    "Signup" : "Signup", 
    "knockout": "knockout-2.3.0", 
    "knockout.validation": "knockout.validation", 
    "jquery": "require-jquery" 
    } 
}); 
+0

która wersja knockout.validation używasz? I skąd bierzesz wyjątek: 'Uncaught ReferenceError: ko is not defined'? – nemesv

+0

Używam wersji '2.0' i widzę ten błąd w przeglądarce, kiedy debuguję mój model. – Ancient

+0

Myślę, że potrzebujesz również shim do sprawdzania poprawności, ponieważ jest zależne od Konckout right –

Odpowiedz

4

Twój model działa dobrze ze mną, oto mój wymagają config:

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

i nie trzeba już require-jquery, ponieważ jQuery defines named AMD module 'jquery' (all lower case) when it detects AMD/RequireJS.

+0

Bardzo dziękuję dzięki. Uratowałeś mnie . – Ancient

+0

Nadal dostaję Uncaught ReferenceError: ko nie jest zdefiniowany knockout.validation.js: 2 dla 1.0.1 z nuget. –