2016-04-02 84 views
2

我正在用Angular製作我的第一個武器。我無法理解來處理模型數據修改,並將其存儲在數據庫中,例如,最好的辦法:Angular:保持模型數據與數據庫同步

在控制器:

$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提供了一些方法來訪問當前「單擊」項來更新道具(在這種情況下的狀態)?

希望我很清楚。 謝謝。

編輯:因此,根據瓊斯博士的評論,我寫這個使用下劃線。

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

正確 - 它確實取決於應用程序的構建環境以及刷新數據的成本。所以大多數情況下,您可以在保存後刷新數據。但是,如果調用數據的速度較慢,則可以使用新信息更新客戶端模型。通常情況下,如果更新模型,我會選擇從服務器進行刷新,這樣我可以確定在更新後我擁有最新的數據。 –