如何在requirejs中使用淘汰赛加载knockout.validation [英] How to load knockout.validation with knockout in requirejs

查看:13
本文介绍了如何在requirejs中使用淘汰赛加载knockout.validation的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将在 require js 中定义我的模型,我需要 knockoutknockout 验证插件 在我的模块和 jquery 中.

I am going to define my model in require js and i need knockout and knockout validation plugin in my module and also 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);
   }           
 });

但是当我运行它时出现以下错误.

But when i run this i got the following error .

Uncaught ReferenceError: ko is not defined

我也尝试调试,发现所有其他库knockoutjquery 都在完美加载.

i also try to debug and found that all other librariesknockout, jquery are loading perfectly .

这是我的配置部分

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

推荐答案

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

Your model works fine with me, here's my require 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);
  };           
});

并且您不再需要 require-jquery,因为 jQuery当检测到 AMD/RequireJS 时,定义命名的 AMD 模块jquery"(全部小写).

and you don't need require-jquery anymore, since jQuery defines named AMD module 'jquery' (all lower case) when it detects AMD/RequireJS.

这篇关于如何在requirejs中使用淘汰赛加载knockout.validation的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆