Knockout验证需要未知的knockout js文件

时间:2015-01-01 13:50:42

标签: knockout.js requirejs knockout-validation

我正在使用需要js和knockout js来开发coredova应用程序,当我使用淘汰赛验证时,它不起作用,它说" 脚本错误:淘汰赛" 。它显示在网络下的inspect元素中,www / js / knockout.js 404未找到,但在js文件夹中没有knockout.js文件,但它需要该文件,只有当我在define中使用knockout.validation时才会出现此错误method.But为什么它问这种类型的淘汰js文件 我做了简单的演示代码,请帮帮我

这是我的viewModel

define(['knockout-3.2.0','knockout.validation'], function(ko,validation) {

    return function appViewModel() {
        this.firstName = ko.observable('Bert').extend({ number: true,minLength: 3, maxLength: 10 });

    };
});

这是我的需要路径设置

require.config({
    paths: {
        'jQuery': 'jQuery/jquery-2.1.1.min',
        'knockout-3.2.0': 'ko/knockout-3.2.0',
        'knockout.validation': 'ko/knockout.validation'

    },
    shim: {
        'jQuery': {
            exports: '$'
        },
        'knockout-3.2.0': {
            exports: 'ko'
        },
        "knockout.validation": {
             exports: 'validation'
         }
    }

});

1 个答案:

答案 0 :(得分:4)

Knockout以及Knockout-Validation插件支持CommonJS和AMD模块模式,因此不需要shim它们。

您收到错误,因为Knockout-Validation插件显式依赖于名为"knockout" 的模块(请参阅GitHub),因此要修复它,您需要重命名{{3}} 1}}模块到'knockout-3.2.0'

所以固定的require.js配置看起来像:

"knockout"

当然,在您的模块中,您需要使用名称require.config({ paths: { 'jQuery': 'jQuery/jquery-2.1.1.min', 'knockout': 'ko/knockout-3.2.0', 'knockout.validation': 'ko/knockout.validation' }, shim: { 'jQuery': { exports: '$' } } });

"knockout"