• Knockout学习之Hello World


    目前Knockout.js的教程和视频也有不少,但好多都是1.x版本的,而官方的更新也是很积极。
    所以我直接选择通过官方的小教程来学习。正好也可以亲身体验一下MVVM。
    将数据绑定到DOM

    <!DOCTYPE HTML>
    <html>
    <head>
        <script src="http://knockoutjs.com/js/jquery-1.4.2.min.js"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.1.0/knockout-min.js"></script>
    </head>
    <body>
        <!-- This is a *view* - HTML markup that defines the appearance of your UI -->
        <hr />
        <h3>绑定前:</h3>
        <p>First name: <strong>todo</strong></p>
        <p>Last name: <strong>todo</strong></p>
        <hr />
        <h3>绑定后:</h3>
        <p>First name: <strong data-bind="text:firstName">todo</strong></p>
        <p>Last name: <strong data-bind="text:lastName">todo</strong></p>
        <script type="text/javascript">
            // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
            function AppViewModel() {
                this.firstName = "Bert";
                this.lastName = "Bertington";
            }
    
            // Activates knockout.js
            ko.applyBindings(new AppViewModel());
        </script>
    </body>
    </html>

    效果:

    ②监听DOM的变化
    当input内容变化时,绑定到该DOM的数据也会变化,随之而来的就是绑定了该数据的DOM也会更新。

    <!DOCTYPE HTML>
    <html>
    <head>
        <script src="http://knockoutjs.com/js/jquery-1.4.2.min.js"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.1.0/knockout-min.js"></script>
    </head>
    <body>
        <!-- This is a *view* - HTML markup that defines the appearance of your UI -->
    
        <p>First name: <strong data-bind="text: firstName"></strong></p>
        <p>Last name: <strong data-bind="text: lastName"></strong></p>
    
        <p>First name: <input data-bind="value: firstName" /></p>
        <p>Last name: <input data-bind="value: lastName" /></p>
        <script type="text/javascript">
            // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
            function AppViewModel() {
                this.firstName = ko.observable("Bert"); //ko.observable是监听firstName的关键。里面的参数是其初始值
                this.lastName = ko.observable("Bertington");
            }
    
            var model = new AppViewModel();
    
            // Activates knockout.js
            ko.applyBindings(model);
        </script>
    </body>
    </html>

    ③某个DOM的值依赖于 绑定的数据计算后的结果;连接View和ViewModel的事件。

    <!DOCTYPE HTML>
    <html>
    <head>
        <script src="http://knockoutjs.com/js/jquery-1.4.2.min.js"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.1.0/knockout-min.js"></script>
    </head>
    <body>
        <p>First name: <strong data-bind="text: firstName"></strong></p>
        <p>Last name: <strong data-bind="text: lastName"></strong></p>
    
        <p>First name: <input data-bind="value: firstName" /></p>
        <p>Last name: <input data-bind="value: lastName" /></p>
        
        <p>Full name: <strong data-bind="text: fullName" ></strong></p>
        
        <input type="button" data-bind="click:toUpper" value="To Upper" />
        <script type="text/javascript">
            // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
            function AppViewModel() {
                this.firstName = ko.observable("");
                this.lastName = ko.observable("");
                this.fullName = ko.computed(function() {
                    return this.firstName() + "--" + this.lastName();
                }, this);
                this.toUpper = function() {
                    var c = this.lastName();
                    this.lastName(c.toUpperCase());
                };
            }
    
            var model = new AppViewModel();
    
            // Activates knockout.js
            ko.applyBindings(model);
        </script>
    </body>
    </html>
  • 相关阅读:
    CMake基本语法
    Immutable使用与react+redux
    mysql 安装之docker
    elasticsearch 安装之docker 单机
    局域网共享时提示:你没有权限访问,请与网络管理员联系
    【python、Neo4j】 python3.6环境安装neo4j客户端
    【python】 Anaconda jupyter 服务正常,内核启动失败, ipython启动失败
    Neo4j 手动安装apoc插件
    Ubuntu16 安装配置Neo4j
    node工具之nodemon
  • 原文地址:https://www.cnblogs.com/TiestoRay/p/2816909.html
Copyright © 2020-2023  润新知