2017-01-03 32 views
1

私のangularjsで編集可能です。私のテーブルで3〜4のアイテムを編集するとスムーズに実行されていました。編集して保存ボタンを押すと、自動的にページがリロードされ、編集したアイテムに接続されている他のアイテムの値が変更されます。実行更新を確認する方法は完了しました

問題は、テーブル内の52個のアイテムが同期していないときです。リロードした後にいくつかの項目は変更されませんが、私が自分でリロードすると、すべてのデータが編集され、すべて良好です。

私の仮説は、私のループが更新のために52回実行されるときです。私は自分のログをチェックする。私はそれが更新プログラムを実行するとき参照してください。私のループよりも速くリロードされます。

私の結論は、私のログで52回の更新の実行を確認することは可能ですか?

より多くのオプションがある場合、それは素晴らしいことだろう:)

私のコントローラアイデアを共有:あなたは、

nums = [] 

$scope.saveTable =() => 
    for data in nums 
    LeaveCredit.update(data) 
    $route.reload() 


$scope.checkRecord = (data, record) -> 
    if data != record.no_of_days 
    nums.push({ id: record.id, no_of_days: data }) 
+0

あなたの更新非同期または同期のですか? – Yaser

+0

返信してくれてありがとうございました – wiwit

+0

'LeaveCredit.update'が実際にはバックグラウンドで非同期であると問題を説明します。 'LeaveCredit.update()'についてもっと詳しく説明できますか? – willoller

答えて

0

あなたが「更新」のAPIを制御することができ、それが同期ならなければなりませんあなたがこれを行うことができますので、それはあなたのデータの更新されたバージョンを返します:

$scope.saveTable =() => 
    for data in nums 
    data = LeaveCredit.update(data) 

あなたがする必要はありません、それを行うことができる場合データは既にライブで更新されるためです。

update()がが非同期である場合、あなたはこのようにそれのために約束インタフェースを使用することができるかもしれない:

$scope.saveTable =() => 
    for data in nums 
    LeaveCredit.update(data) 
     .then((updatedData) => 
     data = updatedData 

は(それはおいしいコーヒーだかどうかわからない)

+0

あなたは私にjs構文を与えることができます変換を行います:) – wiwit

+0

最初のソースコードは問題ありませんでしたが、私はleavecreditsで同期する別のテーブルを持っていますなぜ私はリロードする必要があります – wiwit

関連する問題