jquery - 如何在requirejs中使用knockout加载knockout.validation

标签 jquery knockout.js requirejs knockout-validation

我将在 require js 中定义我的模型,我需要 knockoutknockout validation plugin在我的模块和 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);
   }           
 });

但是当我运行这个时,我收到以下错误。

Uncaught ReferenceError: ko is not defined

我还尝试调试,发现所有其他库knockoutjquery都加载完美。

这是我的配置部分

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

最佳答案

你的模型适合我,这是我的需求配置:

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

并且您不再需要require-jquery,因为 jQuery defines named AMD module 'jquery' (all lower case) when it detects AMD/RequireJS.

关于jquery - 如何在requirejs中使用knockout加载knockout.validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18072784/

相关文章:

javascript - 数据在数据表中返回未定义的ajax加载

javascript - 如何根据列条件设置默认颜色

javascript - 在 Knockout.js 中绑定(bind)函数的结果

javascript - 向挖空映射对象添加操作

javascript - Internet Explorer 中模块的加载超时

javascript - 如何使用js,jquery移动表格滚动条?

jQuery:将函数绑定(bind)到数组中的对象,避免关闭错误

knockout.js - 为什么在 knockout.js 示例中,viewmodel 有时被定义为一个函数,有时又被定义为一个直接变量定义?

javascript - 使用 requireJS 加载 IE 依赖

javascript - 使用 requireJS 优化器保留 highcharts 的 jQuery 依赖性