我在这里返回ViewModel做错了什么? [英] What am I doing wrong here returning viewmodel?

查看:131
本文介绍了我在这里返回ViewModel做错了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将转换为durandal/hottowel.

I am trying to convert this to durandal/hottowel.

viewModel:

define(['plugins/router', 'knockout', 'services/logger', 'durandal/app', 'mapping', 'services/routeconfig', 'services/dataBindingHandlers', 'services/appsecurity'], function (router, ko, logger, app, mapping, routeconfig, dataBindingHandlers, appsecurity) {
    function activate() {
        logger.log(viewModel.title + "'s  View Activated", null, viewModel.title, true);
        return true;
    }

    var viewModel = {
        activate: active,
        title: 'Overview',
        query: ko.observable('')
    };

    var url = "https://www.googleapis.com/books/v1/volumes?q=the+Cat+In+The+Hat", path = $.getJSON(url);

    path.then(function (data) {
        var books = data.items;
        console.log(books);
        viewModel.model = mapping.fromJS(data.items);
        viewModel.books = ko.computed(function () {
            var search = this.query().toLowerCase();
            return ko.utils.arrayFilter(this.model(), function (book) {
                return book.id().toLowerCase().indexOf(search) >= 0 || book.kind().toLowerCase().indexOf(search) >= 0 || book.etag().toLowerCase().indexOf(search) >= 0
            });
        }, viewModel);
        return viewModel;
    });

});

查看:

<section>
    <h2 class="page-title" data-bind="text: title"></h2>
    <header>
        <form action="#">
            <input class=search-query placeholder="Search…" type="search" name="q" data-bind="value: query, valueUpdate: 'keyup'" autocomplete="off" speech x-webkit-speech>
        </form>
    </header>
    <div class="content">
        <ul data-bind="foreach:books">
            <li>
                <strong data-bind="text: id"></strong> –
                <span data-bind="text: kind"></span> –
                <span data-bind="text: etag"></span> -
                <p data-bind="text: volumeInfo.description"></p>
            </li>
        </ul>
    </div>
</section>

控制台中没有错误,并且屏幕上没有任何显示,只是正在加载

There are no error in the console and nothing is displaying on screen, it is just loading

推荐答案

define(['plugins/router', 'knockout', 'services/logger', 'durandal/app', 'mapping', 'services/routeconfig', 'services/dataBindingHandlers', 'services/appsecurity'], function (router, ko, logger, app, mapping, routeconfig, dataBindingHandlers, appsecurity) {
    function activate() {
        logger.log(viewModel.title + "'s  View Activated", null, viewModel.title, true);
        return true;
    }

    var viewModel = {
        activate: activate,
        title: 'Overview',
        query: ko.observable(''),
        model: ko.observableArray()
    };

    viewModel.books = ko.computed(function () {
        var search = this.query().toLowerCase();
        return ko.utils.arrayFilter(this.model(), function (book) {
            return book.id().toLowerCase().indexOf(search) >= 0 || book.kind().toLowerCase().indexOf(search) >= 0 || book.etag().toLowerCase().indexOf(search) >= 0;
        });
    }, viewModel);

    var url = "https://www.googleapis.com/books/v1/volumes?q=the+Cat+In+The+Hat", path = $.getJSON(url);

    path.then(function (data) {
        var books = data.items;
        console.log(books);
        viewModel.model(mapping.fromJS(books)());
    });

    return viewModel;
});

这篇关于我在这里返回ViewModel做错了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆