繁体   English   中英

KnockoutJS“点击:绑定无法正常工作

[英]KnockoutJS "click: binding not working

我正在尝试创建一个页面,当单击另一个按钮时,该页面将替换DOM元素中的内容。 我正在使用KnockoutJS来管理绑定和点击事件。 我的ViewModel中有一个方法,它将从文本文件中加载一些文本,并用文本文件内容替换DOM内容。 问题是点击似乎不起作用:

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>About Me</title>
        <link rel="stylesheet" type="text/css" href="css/styles.css">
        <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
        <script src="js/knockout-3.3.0.js"></script>
        <script src="js/nav-mobile.js"></script>
        <script src="js/app.js"></script>
    </head>
    <body>
        <!-- nav bar -->
        <nav>
            <ul class="navbar">
                <li><h1 class="title">About Me</h1></li>
                <li class="nav-text" data-bind="click: setPage.bind('fam')"><p>Family</p></li>
                <li class="nav-text" data-bind="click: setPage.bind('mlg')"><p>MLG</p></li>
                <li class="nav-text" data-bind="click: setPage.bind('bio')"><p>Bio</p></li>
                <li class="nav-text" data-bind="click: setPage.bind('int')"><p>Interests</p></li>
            </ul>
        </nav>

        <!-- main section -->
        <section>
            <div class="main">
                <p class="text-main"></p>
            </div>
        </section>
    </body>
</html>

JavaScript的

$(document).ready(function() {
    function ViewModel() {
        var self = this;

        self.text = ko.observable();

        self.setPage = function(page) {
            $.get("../res/text/" + page + ".txt", function(data) {
                console.log("Fetching " + page + ".text" );
                $(".text-main").html(data);
            });
        }
    }

    ko.applyBindings(new ViewModel());
});

我至少希望记录到控制台的东西,但没有。 开发人员工具不显示任何内容。 我也试过像这样的绑定:

data-bind="click: setPage('fam')"

但它不起作用。 我的点击绑定有什么问题?

使用.bind的正确语法是.bind($data, 'parameter')

<li class="nav-text" data-bind="click: setPage.bind($data, 'fam')"><p>Family</p></li>
<li class="nav-text" data-bind="click: setPage.bind($data, 'mlg')"><p>MLG</p></li>
<li class="nav-text" data-bind="click: setPage.bind($data, 'bio')"><p>Bio</p></li>
<li class="nav-text" data-bind="click: setPage.bind($data, 'int')"><p>Interests</p></li>

的jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM