Angular:保持模型数据与数据库同步

时间:2016-04-02 04:34:17

标签: javascript angularjs

我正在用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提供了一些方法来访问当前“clicked”项来更新prop(在这种情况下的状态)?

希望我很清楚。 感谢。

编辑:所以,根据琼斯博士的评论,我用下划线写这个。

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;
}

这是一种有效且正确的方法吗?

1 个答案:

答案 0 :(得分:0)

答案是,这取决于你。与所有异步编程一样,您可以选择“自动同步”或同步作为用户事件的结果(例如,点击保存按钮)。这实际上取决于您的应用的设计方式。

像firebase(angular-fire lib)这样的框架具有方便的内置自动同步功能,或者REST Post / Put请求是更传统的设计模式。