2016-04-02 11 views
2

私は最初の武器を角型にしています。私は、モデル内のデータの変更を処理するための最良の方法を理解し、データベースに格納し、例えばことができません。角度:モデルデータをデータベースと同期させてください

コントローラで:

$scope.items = [ 
    { id: 1, status: 0, data: 'Foo Item' } 
    { id: 2, status: 0, data: 'Foooo' } 
    { id: 3, status: 1, data: 'OooItem' } 
]; 

ビューで:

<tr ng-repeat="item in items | orderBy:'-id'"> 
     <td>{{item.id}}</td> 
     <td>{{item.data}}</td> 
     <td> 
      <div class="btn-group" role="group"> 
       <button type="button" class="btn btn-default" ng-click="status(item.id, 1)">Acept</button> 
       <button type="button" class="btn btn-default" ng-click="status(item.id, 2)">Reject</button> 
      </div>      
     </td> 
    </tr> 

私はに何をすべきアイテムステータスを1または2に更新しますか?サーバーを呼び出して、新しいモデルを取得しますか?モデルデータをJSで更新して呼び出しますか?自動化する方法はありますか? Angularは、現在の「クリックされた」アイテムにアクセスして小道具(この場合はステータス)を更新するいくつかの方法を提供しますか?

希望しました。おかげさまで

EDIT: Dr Jonesのコメントに基づいて、私はアンダースコアを使用してこれを書いています。

function status(id, status) { 
    $http.put().then().... 
    //after success response, update the model 
    item = _.find($scope.items, function (rw) { 
     return rw.id == id 
    }); 

    item.status = status; 
} 

これは有効かつ正しい方法ですか?

答えて

0

答えは本当にあなた次第です。すべての非同期プログラミングと同様に、ユーザーイベントの結果として「自動同期」または同期するオプションがあります(たとえば、保存ボタンを押すなど)。それは本当にあなたのアプリがどのように設計されているかによって異なります。

firebase(angular-fire lib)のようなフレームワークは、自動同期機能を内蔵しています。代わりに、REST Post/Putリクエストはより伝統的なデザインパターンです。

+0

ありがとうございます!しかし、私は余分なフレームワークを使用しないと仮定します。ですから、私はAPIを呼び出し、更新された操作を実行し、UIで応答を得る必要があります。私の関心事は次のとおりです。サーバーから受け取ったIDでモデル内のアイテムを探し、このデータを同期する必要があります。 – mauriblint

+0

修正 - 実際には、アプリの構築方法やデータを更新するのに費やされる費用の状況によって異なります。ほとんどの場合、保存後にデータをリフレッシュすることができます。ただし、データの呼び出しが遅い場合は、クライアントサイドモデルを新しい情報で更新するだけで済みます。通常、モデルが更新されている場合は、サーバーから更新することを選択します。更新後に最新のデータがあることを確認できます。 –

関連する問題