控制流

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 綁定, 那么當(dāng) capital 為空的時(shí)候吉嚣, 子節(jié)點(diǎn) capital.cityName 這個(gè)屬性是不存在的梢薪,代碼會(huì)報(bào)錯(cuò)。

2.使用表達(dá)式進(jìn)行if綁定

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

如果表達(dá)式包含 observable 變量尝哆,那么當(dāng)變量值重新計(jì)算時(shí)秉撇,表達(dá)式的值也會(huì)被重新計(jì)算。相應(yīng)的秋泄,當(dāng)表達(dá)式的值被重新計(jì)算后 琐馆,if 里面的代碼塊會(huì)被重新添加或者移除 。當(dāng)重新添加代碼塊時(shí)恒序,data-bind 屬性會(huì)被應(yīng)用到原來代碼的新拷貝上瘦麸。

ifnot bing

if 綁定的表達(dá)式取反
恩 就這么簡單!F缧病滋饲!

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>歡迎回來,上次登錄時(shí)間為: <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;
        
    //監(jiān)控用戶填入的用戶名和密碼
    self.userName = ko.observable('請輸入用戶名');
    self.psw = ko.observable();
    //用戶明細(xì)監(jiān)控
    self.userInfo = ko.observable();
            
    //通過if綁定來控制登錄表單的顯示與否
    self.showInput = ko.observable(true);
    //點(diǎn)擊登錄按鈕時(shí)觸發(fā)表單的提交事件
    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事件废封,當(dāng)用戶聚焦用戶名輸入框時(shí),清除input中的內(nèi)容
    self.clearInput = function(){
        self.userName('');
    }
}

ko.applyBindings(new ViewModel());
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末术奖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逢并,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郭卫,死亡現(xiàn)場離奇詭異砍聊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贰军,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門玻蝌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人词疼,你說我怎么就攤上這事俯树。” “怎么了贰盗?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵许饿,是天一觀的道長。 經(jīng)常有香客問我舵盈,道長陋率,這世上最難降的妖魔是什么球化? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮瓦糟,結(jié)果婚禮上筒愚,老公的妹妹穿的比我還像新娘。我一直安慰自己菩浙,他們只是感情好锨能,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芍耘,像睡著了一般址遇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斋竞,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天倔约,我揣著相機(jī)與錄音,去河邊找鬼坝初。 笑死浸剩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳄袍。 我是一名探鬼主播绢要,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拗小!你這毒婦竟也來了重罪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤哀九,失蹤者是張志新(化名)和其女友劉穎剿配,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阅束,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呼胚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了息裸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇更。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖呼盆,靈堂內(nèi)的尸體忽然破棺而出年扩,到底是詐尸還是另有隱情,我是刑警寧澤宿亡,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布常遂,位于F島的核電站,受9級特大地震影響挽荠,放射性物質(zhì)發(fā)生泄漏克胳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一圈匆、第九天 我趴在偏房一處隱蔽的房頂上張望漠另。 院中可真熱鬧,春花似錦跃赚、人聲如沸笆搓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽满败。三九已至,卻和暖如春叹括,著一層夾襖步出監(jiān)牢的瞬間算墨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工汁雷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留净嘀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓侠讯,卻偏偏與公主長得像挖藏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子厢漩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理膜眠,服務(wù)發(fā)現(xiàn),斷路器溜嗜,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu)柴底,包括可以多次執(zhí)行任務(wù)的for和while循環(huán),基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 693評論 1 1
  • 本章將會(huì)介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語句Switch 語句控制轉(zhuǎn)移語句 continu...
    寒橋閱讀 715評論 0 0
  • Swift提供了多種控制流聲明。包括while循環(huán)來多次執(zhí)行一個(gè)任務(wù)焙压;if鸿脓,guard和switch聲明來根據(jù)確定...
    BoomLee閱讀 1,939評論 0 3
  • 終于在一個(gè)下雨的中午讀完了這本書,以前讀這本書總是被打斷涯曲,剛剛?cè)计鸬拈喿x的快感瞬間消失野哭,中午有陽光,突然狂風(fēng)大作幻件,...
    ba64aae76ae0閱讀 256評論 0 2