Visual studio 2012 如何在HotTower中使用敲除映射插件

Visual studio 2012 如何在HotTower中使用敲除映射插件,visual-studio-2012,knockout.js,knockout-mapping-plugin,hottowel,Visual Studio 2012,Knockout.js,Knockout Mapping Plugin,Hottowel,我可以在VisualStudio中安装,但当我尝试在视图中映射一些Json数据时,它不起作用。谁能告诉我我做错了什么 这是我的视图模型 define(['plugins/router', 'knockout', 'services/logger', 'durandal/app', 'mapping'], function (router, ko, logger, app, mapping) { //#region Internal Methods function activa

我可以在VisualStudio中安装,但当我尝试在视图中映射一些Json数据时,它不起作用。谁能告诉我我做错了什么

这是我的视图模型

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

    //#region Internal Methods
    function activate() {
        logger.log('Google Books View Activated', null, 'books', true);
        return true;
    }
    //#endregion
    //==jquery=================================================
    function attached() {


    }//-->end of viewAttached() 

    //========VIEWMODEL========================================
    var ViewModel = function (data) {
        activate = activate;
        attached = attached;
        title = 'google Books';

    };

    return new ViewModel();

});

这里是一个在

中运行的示例,我认为您不需要返回新的视图模型。您只需要返回视图模型

define(['plugins/router', 'knockout', 'services/logger', 'durandal/app', 'mapping'],
  function (router, ko, logger, app, mapping) {
    var books = ko.observableArray();
    function activate() {
      getBooks().then(function(){
        logger.log('Google Books View Activated', null, 'books', true);
        return true;
      });
    }
    function attached() {
    }
    function getBooks(){
      $.getJSON(url, function (data) {
        vm.books(ko.mapping.fromJS(data));
        return true;
      });
    }

    var vm = {
      activate : activate,
      attached : attached,
      title : 'google Books',
      books: books
    };

    return vm;
});
编辑
要查找requirejs错误,请添加到main.js文件。它应该有助于跟踪requirejs模块加载错误

requirejs.onError = function (err) {
    console.log(err.requireType);
    if (err.requireType === 'timeout') {
        console.log('modules: ' + err.requireModules);
    }

    throw err;
};

在这种情况下,您需要在viewmodel上公开图书集合,我已经编辑了答案以更好地回答这个问题。我还将考虑将数据检索删除到它自己的JavaScript文件中。