最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

KnockoutJS 3.X API 第四章之click綁定

 更新時(shí)間:2016年10月10日 11:33:23   作者:SmallProgram  
click綁定主要作用是用于DOM元素被點(diǎn)擊時(shí)調(diào)用相關(guān)JS函數(shù)。這篇文章主要介紹了KnockoutJS 3.X API 第四章之click綁定,感興趣的朋友一起看看吧

目的

click綁定主要作用是用于DOM元素被點(diǎn)擊時(shí)調(diào)用相關(guān)JS函數(shù)。最常見用于button、input、a元素。

例如:

You've clicked 0timesClick me

源碼:

<div>
You've clicked <span data-bind="text: numberOfClicks"></span> times
<button data-bind="click: incrementClickCounter">Click me</button>
</div>
<script type="text/javascript">
var viewModel = {
numberOfClicks : ko.observable(0),
incrementClickCounter : function() {
var previousCount = this.numberOfClicks();
this.numberOfClicks(previousCount + 1);
}
};
</script>

如上述例子,沒點(diǎn)過button被點(diǎn)擊時(shí)都會(huì)觸發(fā)incrementClickCounter 回調(diào)函數(shù),從而更新視圖狀態(tài)。

備注,click后所跟的并不一定非得是視圖模型的函數(shù)。可以是任何對象的函數(shù),直接引用即可。例如:click: someObject.someFunction。

備注1:傳遞一個(gè)參數(shù)

當(dāng)您的處理程序中,UI展示了一個(gè)監(jiān)控屬性數(shù)組,例如:

LondonRemove
ParisRemove
TokyoRemove

源碼:

<ul data-bind="foreach: places">
<li>
<span data-bind="text: $data"></span>
<button data-bind="click: $parent.removePlace">Remove</button>
</li>
</ul>
<script type="text/javascript">
function MyViewModel() {
var self = this;
self.places = ko.observableArray(['London', 'Paris', 'Tokyo']);
// The current item will be passed as the first parameter, so we know which place to remove
self.removePlace = function(place) {
self.places.remove(place)
}
}
ko.applyBindings(new MyViewModel());
</script>

當(dāng)點(diǎn)擊remove時(shí)只會(huì)刪除當(dāng)前的項(xiàng)目,從源碼上看,說明傳遞的是當(dāng)前項(xiàng)目。這種在渲染集合數(shù)據(jù)的時(shí)候特別有用。

需要注意兩點(diǎn):

如果你是一個(gè)嵌套在綁定上下文,例如,如果使用foreach或with綁定,但你的處理函數(shù)是根視圖模型或其他一些父模型,你需要使用一個(gè)前綴,如$parent或$root定位處理函數(shù)。
在您的視圖模型,但是這是可以使用self(或其他一些變量)作為this的一個(gè)別名。

備注2:傳遞事件對象(多參數(shù))

一些情況下,你可能需要訪問DOM的事件對象(event),一般情況下KO會(huì)將事件對象作為第二個(gè)參數(shù)傳遞給函數(shù)。例如:

<button data-bind="click: myFunction">
Click me
</button>
<script type="text/javascript">
var viewModel = {
myFunction: function(data, event) {
if (event.shiftKey) {
//do something different when user has shift key down
} else {
//do normal action
}
}
};
ko.applyBindings(viewModel);
</script>

如果你要傳遞更多的參數(shù),可以使用函數(shù)文本的方式。例如:

<button data-bind="click: function(data, event) { myFunction('param1', 'param2', data, event) }">
Click me
</button>

還有更優(yōu)雅的寫法,比如使用bind函數(shù)綁定多個(gè)參數(shù)。例如:

<button data-bind="click: myFunction.bind($data, 'param1', 'param2')">
Click me
</button>

備注3:允許默認(rèn)點(diǎn)擊動(dòng)作

默認(rèn)情況下,Ko會(huì)阻止任何默認(rèn)動(dòng)作。比如你把click綁定到一個(gè)a標(biāo)簽上,當(dāng)點(diǎn)擊時(shí),瀏覽器會(huì)調(diào)用click綁定的回調(diào)函數(shù)。但是不會(huì)執(zhí)行href的連接跳轉(zhuǎn)。

如果你不希望這種默認(rèn)的阻止動(dòng)作??梢栽诨卣{(diào)函數(shù)中返回true。

備注4:防止冒泡事件

默認(rèn)情況下,KO允許click綁定繼續(xù)到任何高級(jí)別的事件處理。例如,父元素和子元素都有click綁定,那么這兩個(gè)元素的click綁定會(huì)都被觸發(fā)。

可以使用一個(gè)附加綁定clickBubble來解決該問題:

<div data-bind="click: myDivHandler">
<button data-bind="click: myButtonHandler, clickBubble: false">
Click me
</button>
</div>

如上述例子,myButtonHandler將被調(diào)用,而附件綁定clickBubble,并設(shè)置了false,這至使父元素的myDivHandler不會(huì)被調(diào)用。

備注5:與Jquery互動(dòng)

如果存在Jquery的click事件,KO將會(huì)去調(diào)用Jquery的click事件,如果你想總是使用自己本地的事件來處理,可以在ko.applyBindings中加入如下代碼:

ko.options.useOnlyNativeEvents = true;

以上所述是小編給大家介紹的KnockoutJS 3.X API 第四章之click綁定,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • JavaScript中你不知道的Object.entries用法

    JavaScript中你不知道的Object.entries用法

    大家應(yīng)該都知道,Object.entries()方法返回一個(gè)給定對象自身可枚舉屬性的鍵值對數(shù)組,其排列與使用 for...in 循環(huán)遍歷該對象時(shí)返回的順序一致,這篇文章主要給大家介紹了關(guān)于JavaScript中你不知道的Object.entries用法的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 基于JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名器

    基于JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名器

    這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)隨機(jī)點(diǎn)名器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • js前端獲取用戶位置及ip屬地信息

    js前端獲取用戶位置及ip屬地信息

    這篇文章主要為大家介紹了js前端獲取用戶位置及ip屬地信息示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • js添加事件的通用方法推薦

    js添加事件的通用方法推薦

    下面小編就為大家?guī)硪黄猨s添加事件的通用方法推薦。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • 微信小程序制作扭蛋機(jī)代碼實(shí)例

    微信小程序制作扭蛋機(jī)代碼實(shí)例

    這篇文章主要介紹了微信小程序制作扭蛋機(jī)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Bootstrap入門書籍之(一)排版

    Bootstrap入門書籍之(一)排版

    這篇文章主要介紹了Bootstrap入門書籍之(一)排版的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • JavaScript中判斷頁面關(guān)閉、頁面刷新的實(shí)現(xiàn)代碼

    JavaScript中判斷頁面關(guān)閉、頁面刷新的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JavaScript中判斷頁面關(guān)閉、頁面刷新的實(shí)現(xiàn)代碼,在一些特殊的場合中會(huì)用到這個(gè)技術(shù),需要的朋友可以參考下
    2014-08-08
  • js實(shí)現(xiàn)篩選功能

    js實(shí)現(xiàn)篩選功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)篩選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • iis6+javascript Add an Extension File

    iis6+javascript Add an Extension File

    iis6+javascript Add an Extension File...
    2007-06-06
  • JavaScript中find()和?filter()方法的區(qū)別小結(jié)

    JavaScript中find()和?filter()方法的區(qū)別小結(jié)

    js中find和filter方法大家在工作中會(huì)經(jīng)常遇到,那么他們有什么區(qū)別呢?這篇文章主要給大家介紹了關(guān)于JavaScript中find()和?filter()方法區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-12-12

最新評論

万山特区| 巴彦淖尔市| 东丽区| 宁明县| 望都县| 莒南县| 叙永县| 军事| 长兴县| 怀化市| 章丘市| 兴宁市| 吉安市| 民权县| 大同县| 黔西| 九龙坡区| 大埔县| 开原市| 嘉义县| 镇康县| 卫辉市| 沙雅县| 永昌县| 筠连县| 新密市| 武山县| 贺州市| 张北县| 远安县| 临西县| 新干县| 大姚县| 库伦旗| 枣阳市| 个旧市| 军事| 宣城市| 广安市| 岗巴县| 高尔夫|