如何在Hottowel中使用Knockout Mapping插件

时间:2013-12-08 22:39:54

标签: visual-studio-2012 knockout.js knockout-mapping-plugin hottowel

我能够在VisualStudio中安装ko.mapping但是当我尝试在我的视图中映射一些Json数据时它不起作用。谁能告诉我我做错了什么?

这是我的 viewmodel

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

});

这里是Jsfiddle

中的一个工作示例

1 个答案:

答案 0 :(得分:2)

我认为您不需要返回新的View模型。你只需要返回视图模型。

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