私はノックアウトを使用していると私が達成しようとしていると感動された要素(VMS)を取得する方法を、指を動かし、このです:私は、ユーザーが選択したいすると、ユーザーがタッチとknockout.js
いくつかのブロック:
- の周りにマウスを移動し、マウスボタンを離すことなく、第1のブロック(それが選択されている)
- をクリックして、あなたが通過する全てのブロックが
- を選択するには、秒を停止するためにボタンを離します選挙。
マウスイベントを使用するのは非常に簡単ですが、タッチデバイスもターゲットにする必要があります(Android、iPhone、タッチノート)。
ノックアウトでタッチイベントを使用して同じ動作をするにはどうすればいいですか?
- タッチ指を離すことなく、最初のブロック
- 、動き回る
- はすべてのブロックに
PS指を離し触れ選択:タッチイベントを使用するので、ときに私が捕まってしまったが、イベントソースは最初に触れられた要素にロックされています(なぜ?)、他の誰がユーザーのタッチをブロックしているのかわかりません。ここで
は私のコードでjsfiddleです:
https://jsfiddle.net/m38tfpq4/2/
var vmBlock = function(label) {
var self = this;
self.text = label;
self.color = ko.observable('grey');
}
var vm = function() {
var self = this;
self.isSelecting = false;
self.blocks = [new vmBlock('a'), new vmBlock('b'), new vmBlock('c')];
self.selectStart = function(block) {
console.log('start');
self.isSelecting = true;
self.select(block);
}
self.selectEnd = function(block) {
console.log('end');
self.isSelecting = false;
}
self.select = function(block) {
console.log('select: ' + self.isSelecting);
if (!self.isSelecting) {
return;
}
block.color('red');
};
};
ko.applyBindings(new vm());
.block {
width: 100px;
height: 100px;
margin: 6px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div class="container" data-bind="foreach: blocks">
<div class="block" onselectstart="return false" data-bind="text: text, style:{ 'background-color' : color }, event: { mousedown: $parent.selectStart, mouseover: $parent.select, mouseup: $parent.selectEnd }">
</div>
</div>
あなたのjsのフィドルは、おかげで固定 –
@AdamWolski空です! – andrecarlucci