2015-01-04 3 views
0

을 후 처리 : 나는 "으로 myText"에 대한 값을받은 후 내 뷰 모델에 솜 로직을 수행 할 그러나나는 녹아웃 값으로 기본 입력 필드가 Knockout.JS 입력 값

<input type="text" data-bind="value: mytext"/> 

. 처음에는 "valueUpdate"와 같은 일종의 사후 처리를 생각했지만 기본적으로 "enter"og "space"가 실행 된 후에 함수를 실행하려고합니다. 나는 새로운 bindingHandler를 작성해야합니까, 아니면 좀 더 솔직한 방법으로 이것을 할 수 있습니까?

기본적으로 내가하려는 것은 jquery/autocomplete/multible과 Ryan Niemeyers의 녹아웃 정렬 가능한 예 http://jsfiddle.net/rniemeyer/vgXNX의 조합입니다.

<div class="container"> 
    <div class="item" data-bind="sortable:{template:'tagsTmpl',data:myTags, allowDrop:true"></div> 
    <input data-bind="value: mytext, event: {keypress: handleKey}"/> 
    <!-- Line above replacing this: <a href="#" data-bind="click: $root.addTag">Add Tag</a> -->      
</div> 
+0

인가? –

+0

질문이 다소 불확실합니다. 또한 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)의 인스턴스 일 수 있습니다. 질문을 업데이트하고 문맥 및 코드 (예 : 사용하려는 '일부 논리'를 포함한 실제보기 모델 논리)를 포함 시키십시오. 시나리오를 작성하는 것이 더 바람직합니다. – Jeroen

+0

@Wayne, 나는 내가 집중력을 잃어서 살 수 있다고 생각한다. 기본적으로 개체의 새 인스턴스를 만들려면 입력/공간 - 텍스트 입력을 새 개체의 특성 중 하나가되도록합니다. 새 인스턴스를 ko.observableArray에 푸시합니다. –

답변

3

는 기본적으로 난 그냥 "입력"후 기능을 실행하려면 OG "공간 :

내는 등,"작업 추가 "를 대체하는 div.item 후 div.container에 "맞았다.

event 바인딩을 사용할 수 있습니다. 이벤트 트리거로 확인 분야에서 초점이 손실

ko.applyBindings({ 
 
    mytext: ko.observable("initial value"), 
 
    handleKey: function(data, event) { 
 
     if (event.keyCode == 0x20) { 
 
      console.log("Space has been pressed!"); 
 
     } 
 
     return true; 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<input type="text" data-bind="value: mytext, event: {keypress: handleKey}" />

+0

이벤트 방식으로 제 경우가 해결되었습니다. 고맙습니다! :) "handleKey"함수에 태그를 추가하여 함수를 호출하여 문제를 해결했습니다. 여기 해결책 : http://jsfiddle.net/AsleG/qbjytqop/ –

+1

@AsleG 힌트 : 커서 키를 잡으려면'keypress' 대신'keyup'을 사용하십시오. – Tomalak

+0

나는 그런 암시를 좋아합니다. : D 조 감사, @ 토 말렉! –