【问题标题】:How to use Knockout Mapping plugin in Hottowel如何在 Hottowel 中使用 Knockout Mapping 插件
【发布时间】:2014-01-30 17:52:32
【问题描述】:

我能够在 VisualStudio 中安装 ko.mapping,但是当我尝试在我的视图中映射一些 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();

});

这是Jsfiddle中的一个工作示例

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 在这种情况下,您需要在视图模型上公开书籍集合,我已经编辑了答案以更好地回答问题。我还会考虑将数据检索删除到它自己的 JavaScript 文件中。
    • 看看 [github.com/johnpapa/PluralsightSpaJumpStartFinal] 这是 HotTowel 作者的示例应用程序。
    猜你喜欢
    • 2013-09-07
    • 2012-04-02
    • 2023-03-22
    • 1970-01-01
    • 2013-02-23
    • 2013-04-22
    • 2014-05-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多