所以我工作的一個迪朗達爾/淘汰賽應用,在那裏我點擊像這樣定義的按鈕:Durandal.js/Knockout.js - 是否有可能在compositionComplete之後返回原始點擊事件?
<button class="addNote" data-bind="click: function() { addNote($parent); }">
<i class="fa fa-plus"></i>
</button>
我「addNote」處理器熄滅,組成一個新的視圖/模型(這基本上是一個很大的束縛textarea)並將它們插入到屏幕中。在組合結束時(在compositionComplete方法中),我使用knockout的hasFocus綁定將焦點設置在新創建的textarea上。
var compositionComplete = function (view, parent) {
setFocus(true);
};
<textarea data-bind="value: note, hasFocus: setFocus" autofocus></textarea>
這是因爲我的用戶能夠按「添加」按鈕,並開始而無需他們的光標放到< textarea的>字段中鍵入一個音符工作非常漂亮。除了移動設備(我嘗試過iPad,iPhone,Nexus平板電腦,Surface,samsung s3/s4,windows手機)。
的重點是< textarea的>(我可以告訴大家,因爲應用了集中式的,我們有),但用戶仍然需要點擊/點的< textarea的>獲得軟鍵盤打開實際設置。在大量的谷歌搜索和一些失敗的嘗試之後,我發現有些人注意到了原始點擊事件中<textarea>的成功。我想知道是否有辦法讓compositionComplete運行(這樣我知道<textarea>已被加載)到我的click事件中,這是一個非常新穎的方法,然後可以設置重點?就像一連串的承諾或某種連鎖事件?我的理論是,如果我可以等待點擊事件來設置焦點,鍵盤可能會彈出。
<button class="addNote" data-bind="click: function() { someEvent($parent); }">
<i class="fa fa-plus"></i>
</button>
var someEvent = function (parent) {
addNote(parent);
//wait here until compositionComplete fires and then setFocus(true);
};