控制流

作者: luichooy | 来源:发表于2016-12-07 19:38 被阅读9次

foreach bind

1.示例

<h4>People</h4> 
<ul data-bind="foreach:people">
    <li>
        Name at position <span data-bind="text:$index"></span>:
        <span data-bind="text:name"></span>
        <a href="#" data-bind="click:$parent.removePerson">Remove</a>
    </li>
</ul>
<button data-bind="click:addPerson">Add</button>

    function ViewModel(){
        var self = this;

        self.people = ko.observableArray([
            {name:"Britney"},
            {name:"Bryant"},
            {name:"Adele"}
        ]);

        self.removePerson = function(){
            self.people.remove(this);
        };

        self.addPerson = function(){
            self.people.push({name:"Ellie comes at " + new Date().toLocaleString()});
        };

    }

    ko.applyBindings(new ViewModel());

2.不带元素的绑定

<ul>
    <li>Header item</li>
    <!-- ko foreach:myItems -->
        <li>Item <span data-bind="text:$data"></span></li>
    <!-- /ko -->
</ul>

 ko.applyBindings({
    myItems:['A','B','C','D']
 });

if bind

1.绑定示例

<ul data-bind="foreach:countries">
    <li>
         Country:<span data-bind="text:name"></span>
        <div data-bind="if:capital,style:{display:'inline-block'}">
            Capital:<span data-bind="text:capital.cityName"></span>
        </div>
    </li>
</ul>
    ko.applyBindings({
        countries:[
            {name:'中国',capital:{cityName:'北京'}},
            {name:'美国',capital:{cityName:'华盛顿'}},
            {name:'香港',capital:null},
            {name:'日本',capital:{cityName:'东京'}}
        ]
    });

if 绑定是很重要的,它能让代码正常工作。 比如上面的例子,如果没有 if 绑定, 那么当 capital 为空的时候, 子节点 capital.cityName 这个属性是不存在的,代码会报错。

2.使用表达式进行if绑定

<ul> 
    <li>This item always appears</li> 
    <!-- ko if: someExpressionGoesHere --> 
        <li>I want to make this item present/absent dynamically</li>
    <!-- /ko -->
</ul>

如果表达式包含 observable 变量,那么当变量值重新计算时,表达式的值也会被重新计算。相应的,当表达式的值被重新计算后 ,if 里面的代码块会被重新添加或者移除 。当重新添加代码块时,data-bind 属性会被应用到原来代码的新拷贝上。

ifnot bing

if 绑定的表达式取反
恩 就这么简单!!!

with bind

<form  data-bind="submit:login,if:showInput">
    用户名:<input  data-bind="value:userName,event:{focus:clearInput}" /><br><br>
    密码:<input type="password" data-bind="value:psw"><br><br>
    <button type="submit">登录</button>
</form>

<div data-bind="with:userInfo">
    <h3>欢迎回来,上次登录时间为: <span data-bind="text:lastLoginDate"></span></h3>
    <ol data-bind="foreach:userInfoData">
        <li data-bind="text:text"></li>
    </ol>

    <button data-bind="click:$parent.signOut">退出登录</button>
</div>


function ViewModel(){
    var self=this;
        
    //监控用户填入的用户名和密码
    self.userName = ko.observable('请输入用户名');
    self.psw = ko.observable();
    //用户明细监控
    self.userInfo = ko.observable();
            
    //通过if绑定来控制登录表单的显示与否
    self.showInput = ko.observable(true);
    //点击登录按钮时触发表单的提交事件
    self.login = function(){
        var username = self.userName();
        var loginLog = [
            {text:username +' 今天是星期'+(new Date().getDay()+1)},
            {text:username +' 美好的一天从这里开始'},
            {text:username+' 祝您生活愉快!'}
        ];
        //向用户信息userInfo 中写入信息
        self.userInfo({lastLoginDate:new Date().toLocaleString(),userInfoData:loginLog});
        //登录成功后,隐藏form表单
        self.showInput(false);
    }
    //绑定退出登录
    self.signOut = function(){
        alert("确定退出吗?");
        //清空userInfo
        self.userInfo(undefined);
        //退出登录后显示登录表单
        self.showInput(true);
    }

    //绑定focus事件,当用户聚焦用户名输入框时,清除input中的内容
    self.clearInput = function(){
        self.userName('');
    }
}

ko.applyBindings(new ViewModel());

相关文章

  • 9.控制流(theControlFlow)

    控制流 kotlin_控制流 swift控制流

  • Python | 常用的控制流语句

    一、控制流语句介绍 了解什么是控制流语句以及Python常用的两种控制流语句。 1.控制流语句 控制流语句即用来实...

  • 控制流

    上一篇:基础运算当前篇:控制流下一篇:集合类型 从大体来讲控制流分为条件语句和循环语句,而这两种语句差不多就是程序...

  • 控制流

    0. 分支结构 概念:指程序的 流程走向,比较像一棵树 分散 的 树枝 分类单分支判断1. 一般形式 age ...

  • 控制流

    控制流 [TOC] Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不...

  • 控制流

    语句与程序块 在表达式之后加上一个分号(;),它们就变成了语句。例如: 在C语言中,分号是语句的结束符。用一对花括...

  • 控制流

    foreach bind 1.示例 2.不带元素的绑定 if bind 1.绑定示例 if 绑定是很重要的,它能让...

  • 控制流

    For循环 for循环用来按照指定的次数多次执行一系列语句。Swift 提供两种for循环形式: for-in用来...

  • 控制流

    For-In 循环 输出乘 5 乘法表前面一部分内容: 如果你不需要区间序列内每一项的值,你可以使用下划线( _ ...

  • 控制流

    控制流 if表达式 在 Kotlin 中,if是一个表达式,即它会返回一个值。因此就不需要三元运算符(条件 ? 然...

网友评论

      本文标题:控制流

      本文链接:https://www.haomeiwen.com/subject/qqpkmttx.html