2017-07-20 42 views
0

<textarea>中,我使用(ngModelChange)來檢測內容更改並將RestAPI發送到服務器。但是,如果我發送一個1000個字符的段落,當我添加一個新的5個字母的單詞時,實際上它會向服務器發送1001 + 1002 + 1003 + 1004 + 1005 = 5015個字符,這是完全不必要的。檢測單詞和句子的完成情況

因此,我試圖檢測句子完成(或單詞完成),以便只發送新句子(單詞)(如上例中,只發送了5個新字符,或者至少只有1005個字符是發送)。

我已經試過的方法有:(採用regex.trim()length

  1. 檢測空白;
  2. 檢測','和'。'
  3. 比較當前和以前的字符串的長度。

雖然我不知道這是否是最好的方法。

是否有更好的方法來檢測<textarea>中的單詞/句子變化?


摘要:雖然我不想考慮按時更新,但它仍然是一個很好的考慮方法。 (檢查所選答案)

+0

請用角度而不是角度來標記有角度的2+問題。謝謝。 –

+3

去抖怎麼辦?只有在幾秒鐘不活動之後才發送,也許與您提到的其他方法結合使用。檢查ngModelOptions。 –

+2

爲什麼不根據計時器而不是改變來做呢? –

回答

1

一種技術是使用超時,將只允許一個請求每隔幾秒鐘或任何間隔

var timeoutFn; 

function change() { 
    console.log('change'); 
    clearTimeout(timeoutFn); 
    timeoutFn = setTimeout(doApiRequest, 1000); 
} 

function doApiRequest() { 
    console.log('apiRequest'); 
} 

for(i = 0; i < 10; i++){ 
    change() 
} 
1

不知道如果我錯過什麼,但我認爲,檢查輸入的最後一個字符以檢測單詞就足夠了。如果最後一個字符是一個字母([a-z]),它不是一個字;如果是其他內容,則直到最後一個非字母之前的內容是一個單詞。

對於句子,我認爲這將足以檢測'。'字符。你會得到'。',你會得到一個句子。直到前面的內容'。'是你的句子。

我知道這是非常基本的,但隨時補充一點。