【发布时间】:2013-08-07 00:33:26
【问题描述】:
我将在 require js 中定义我的模型,我需要在我的模块和 jquery 中使用 knockout 和 knockout validation plugin。
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);
}
});
但是当我运行这个时,我得到了以下错误。
Uncaught ReferenceError: ko is not defined
我也尝试调试,发现所有其他库knockout、jquery 都在完美加载。
这是我的配置部分
require.config({
baseUrl: "/Scripts",
paths: {
"Signup" : "Signup",
"knockout": "knockout-2.3.0",
"knockout.validation": "knockout.validation",
"jquery": "require-jquery"
}
});
【问题讨论】:
-
您使用的是哪个版本的 knockout.validation?你从哪里得到异常:
Uncaught ReferenceError: ko is not defined? -
我正在使用版本
2.0,当我调试我的模型时,我在浏览器中看到了这个错误。 -
我认为您还需要一个 shim 进行验证,因为它依赖于 Konckout 权限
-
没有2.0版本的验证插件...你在哪里下载的脚本:github?努吉特? cdnjs?别的地方?因为验证插件从 2012.08 开始支持 requirejs,所以理论上不需要 shim 来使用它。
-
我是从 nuget 下载的,很抱歉版本名称是
1.0.1。
标签: jquery knockout.js requirejs knockout-validation