2017-01-10 5 views
1

私はDevExtreme HTMLコンポーネントのトライアルを始めています。現在、私はAngularJSとDevExtremeで動作する簡単な検索フォームを取得しようとしています。デベロッパー・テキストの値を角度モデルにバインドする(キーダウン時)

Enterキーを押して検索フォームを送信します。問題は、私がフィールド(おそらくonValueChangedイベント)からタブを外すと、ウィジェットが角度モデルを更新するように見えてしまうことです。

searchData.qの値が次のコードで変更されるのは、フィールドをタブアウトするときだけです。したがって、フォームがonKeyChangeイベントで送信されると、以前のテキスト値が使用されます。テキストボックスがこのように動作するのはちょっと違和感があります。確かにベース角度はngモデルではこのようには機能しません...

誰かがそれを修正して値が正しくバインドされていることを知っていますか?角度コントローラで

<form id="HeaderSearchForm" ng-submit="search"> 
    <div dx-form="searchFormOptions"></div> 
</form> 
<pre> 
{{searchData | json}} 
</pre> 

app.controller('HeaderCtrl', ['$scope', 'authorityService', function ($scope, authorityService) { 
    var execSearch, searchData = {}, searchFormOptions; 

    $scope.searchFormOptions = { 
    formData: searchData, 
    items: [{ 
     dataField: 'q', 
     label: { 
     text: 'Search' 
     }, 
     bindingOptions: { 
     "formData.q": "searchData.q" 
     }, 

     editorOptions: { 
     mode: 'search', 
     placeholder: 'Enter a search query', 
     onKeyDown: function(e){ 
      var keyCode = e.jQueryEvent.which; 
      if (keyCode === 13){ 
      search(); 
      } 
     } 
     } 
    }] 
    }; 

    search = function(){ 
    alert('searching for ' + searchData.q); 
    }; 

    $scope.searchData = searchData; 
    $scope.search = search; 

}]); 
+0

この質問が見つかりました:http://stackoverflow.com/questions/26842378/execute-default-event-before-custom-clickfunction-タイムアウトで検索機能をラップしようとしました。関数呼び出し、しかし、少しハッキーのようです。おそらくより良いアプローチですか? –

答えて

0

valueChangeEventのオプションは、あなたのケースで便利です。​​にそれを変更します。

editorOptions: { 
    mode: 'search', 
    placeholder: 'Enter a search query', 
    onKeyDown: function(e) { 
     //... 
    }, 
    valueChangeEvent: "keydown" 
} 

もこのsampleを参照してください。

+0

ああ、それはオプションとして設定されています。それは今のところとても素晴らしいフレームワークのようです。ありがとうSergeyは非常に感謝します。 –

+0

あなたはようこそ! – Sergey

関連する問題