国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

KnockoutJS 3.X API 第四章之事件event綁定

2019-11-20 08:47:27
字體:
來源:轉載
供稿:網友

目的

event綁定即為事件綁定,即當觸發相關DOM事件的時候回調函數。例如keypress,mouseover或者mouseout等

例如:

Mouse over me

源碼:

<div><div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }">Mouse over me</div><div data-bind="visible: detailsEnabled">Details</div></div><script type="text/javascript">var viewModel = {detailsEnabled: ko.observable(false),enableDetails: function() {this.detailsEnabled(true);},disableDetails: function() {this.detailsEnabled(false);}};ko.applyBindings(viewModel);</script>

如上述例子,當鼠標指針移入或者移出Mouse over me時,對于detailsEnabled的值設定true或者false。進而控制Details的顯示和隱藏。

和click一樣,event后邊所跟的格式一般為:event { mouseover: someObject.someFunction },其中的回調函數并不一定非要是視圖模型的函數,他可以時任何對象的函數。

備注1:傳遞一個當前項目作為參數

London
Paris
Tokyo
You seem to be interested in:

源碼:

<ul data-bind="foreach: places"><li data-bind="text: $data, event: { mouseover: $parent.logMouseOver }"> </li></ul><p>You seem to be interested in: <span data-bind="text: lastInterest"> </span></p><script type="text/javascript">function MyViewModel() {var self = this;self.lastInterest = ko.observable();self.places = ko.observableArray(['London', 'Paris', 'Tokyo']);// The current item will be passed as the first parameter, so we know which place was hovered overself.logMouseOver = function(place) {self.lastInterest(place);}}ko.applyBindings(new MyViewModel());</script>

需要注意,如果你使用的是嵌套綁定上下文,比如foreach或者with,而需要處理的回調函數在視圖模型中或者在父模型中,需要使用$parent或者$root前綴來進行綁定

與click綁定一樣,給this取個別名比較好。

備注2:傳遞多個參數

此處請參考click綁定:

<div data-bind="event: { mouseover: myFunction }">Mouse over me</div><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>

封裝多參數示例:

<div data-bind="event: { mouseover: function(data, event) { myFunction('param1', 'param2', data, event) } }">Mouse over me</div>

使用bind函數示例:

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

備注3:允許默認動作

同click綁定一樣,ko禁止默認動作,比如你將event的keypress事件綁定到一個Input元素上,那這個input元素輸入的值將會被keypress回調占用而無法輸入任何信息。解決方案很簡單,就是在回調函數中返回true即可。

備注4:防止冒泡事件

如果要防止冒泡事件,可以直接在事件綁定后附加一個youreventBubble綁定。將該附加綁定設置為false則禁止冒泡事件的發生,例如:

<div data-bind="event: { mouseover: myDivHandler }"><button data-bind="event: { mouseover: myButtonHandler }, mouseoverBubble: false">Click me</button></div>

備注5:Jquery互動

以上所述是小編給大家介紹的KnockoutJS 3.X API 第四章之事件event綁定,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 右玉县| 望江县| 淳安县| 新田县| 壤塘县| 宜黄县| 保定市| 上栗县| 普洱| 许昌县| 弥渡县| 大同市| 龙海市| 益阳市| 绩溪县| 涞水县| 钟山县| 鹿邑县| 肥乡县| 福贡县| 固原市| 长寿区| 太原市| 临朐县| 长岛县| 石城县| 巴林左旗| 湘潭县| 承德市| 乌拉特后旗| 华安县| 庄浪县| 鄯善县| 宣恩县| 进贤县| 香格里拉县| 伊通| 务川| 神池县| 柏乡县| 巧家县|