knockout.js - Durandal 中的 Knockout Mapping 插件未定义

标签 knockout.js requirejs durandal

我遇到了一个问题,我已经尝试解决了 2 天,现在我只是放弃了,所以这是我最后的资源,我正在尝试将 JSON 响应加载到 Durandal 中的 observableArray (KO) 中,但是每次我调用函数 ko.mapping.fromJSON 时都会出现以下错误:

Uncaught TypeError: Cannot call method 'fromJSON' of undefined 

我知道我需要下载插件并将其加载到 main.js 上

requirejs.config({
paths: {
    'text': '../lib/require/text',
    'durandal':'../lib/durandal/js',
    'plugins' : '../lib/durandal/js/plugins',
    'transitions' : '../lib/durandal/js/transitions',
    'knockout': '../lib/knockout/knockout',
    'mapping': '../lib/knockout/knockout.mapping',
    'bootstrap': '../lib/bootstrap/js/bootstrap',
    'jquery': '../lib/jquery/jquery-1.9.1'
},
urlArgs: 'v=1.0.0.1',
shim: {
    'bootstrap': {
        deps: ['jquery'],
        exports: 'jQuery'
   }
}
});

Knockout 工作正常,我能够更新字段和所有内容,但是当我尝试使用 ko.mapping 时我遇到了问题:

define(['durandal/app', 'plugins/router', 'knockout', 'mapping'], function (app, router, ko) {

var clients = ko.observableArray([]);

return {
    displayName: 'My Page',
    clients: clients,
    activate: function () {

        return $.ajax({
            type: "POST",
            url: "backend/ServerServices.php",
            data: {
                s: 'listadodeclientes'
            }
        }).then(function( msg ) {
            ko.mapping.fromJSON(msg, clients);

        });

    },
    showMessage: function () {
        router.navigate('crearcliente');
    }
};
});

最佳答案

为了在 require.js 中使用 ko.mapping 插件,你必须手动将 ko.mapping 变量设置为 ko.mapping 库或使用注入(inject)变量。

示例:

define(['durandal/app', 'plugins/router', 'knockout', 'mapping'], function (app, router, ko, mapping) {
   ko.mapping = mapping;
   ko.mapping.fromJSON(...

   //or use injected mapping parameter
   mapping.fromJson(...


}

查看 this 上的答案问题。

关于knockout.js - Durandal 中的 Knockout Mapping 插件未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604685/

相关文章:

javascript - 如何在 IE8 中触发自定义 javascript 事件?

javascript - ko.toJSON($root,null,2) 返回错误

javascript - 使用 knockoutjs 延迟加载图像

javascript - ObservableArray 未绑定(bind)到 GUI

css - 使用 knockout css 绑定(bind)添加多个类

javascript - require() 调用后的 JavaScript 语法是什么?

javascript - Durandal 小部件未绑定(bind) - 无错误

knockout.js - Hot Towel SPA - 触发浏览器在表单提交时保存登录详细信息

knockout.js - Durandal子 route 的路线未找到错误

javascript - knockout JS : property specific css binding expression