2017-01-04 7 views
1

あります。 DistinctInterestsですが、change.delegate = "function()"がトリガーするのに時間がかかりそうです。change.delegateは、私は、オブジェクトWICHが、このようなオブジェクトの二つの配列を有し有する非常に遅い

<input ref="textsearch" change.delegate="searchInterest($event.target.value)" type="text" /> 

searchInterest(value){ 
     console.log('SEARCH'); 
     this.searchedInterests = []; 
     var i = 0, j = 0;; 
     var upperValue = value.toUpperCase(); 
     for(i = 0 ; i < this.Interests.DistinctInterests.length ; i++){ 
      if(this.Interests.DistinctInterests[i].normalizedName.indexOf(upperValue) !=-1){ 
       this.searchedInterests[j] = this.Interests.DistinctInterests[i]; 
       j++; 
      } 
     } 
     console.log('END SEARCH'); 
    } 

目標は、検索テキストに一致する項目が含まれていthis.searchedInterestsの要素、との見解を更新しています。

私はそれがAureliaの問題かJavaScriptのパフォーマンスかどうかわかりません。私はaldoに$ .each()関数を試してみました。

PS:リストには50個の要素が含まれています。

+1

'input.delegate'を使用していますか? – nicovank

+0

'console.log'の表示が長すぎますか? –

+0

@nicovank、あなたは私の問題を解決しました、ありがとうございます。私は 'input.delegate'を知らなかった。それはうまく動作します。 –

答えて

2

changeイベントは実行されませんwhen a change to the element's value is committed by the userです。

だと思うがCTRL+Zとしてこれはあなたの関数を実行するために多くの時間を要した理由である


ステップコミット:それだけで呼び出されませんでした。

代わりにinputイベントを使用すると、値が変更されるたびに関数が呼び出されます。

<input ref="textsearch" input.delegate="searchInterest($event.target.value)" type="text" /> 
関連する問題