写入DB后如何刷新数据?

时间:2015-03-13 15:04:17

标签: angularjs

我对AngularJS相对较新,并且已经完成了许多培训课程和搜索论坛,需要一些如何解决我认为是一个相对简单的问题的指导。

背景 我有一个MVC应用程序首先使用实体​​框架代码为后端与sql server db。

在客户端,我通过MVC控制器将初始Angular View作为.cshtml视图提供,然后使用Angular进行所有客户端部分视图,并通过Api调用与服务器通信。

问题 我可以成功地从数据库中读取数据,并将数据保存回数据库。但是,当我将数据保存回数据库时,我必须刷新页面才能看到数据。

我通过更新内存中的对象解决了这个问题,并让Angular处理所有绑定。

然而,这似乎不是一个非常好的架构,因为其他用户可能会向数据库添加数据,除非我刷新页面,否则我永远不会看到这些条目。

我正在寻找的是获取数据的最佳方法。

服务

appMainModule.factory('cmOrgChartService', function ($http,$q) {
return {

    getList: function () {
        var deferred = $q.defer();
        $http.get('api/orgchart/list').success(deferred.resolve).error(deferred.reject);
        return deferred.promise;

    },
    save: function (orgChart) {
        $http.post('api/orgchart/saveOrgChart', orgChart);
    },
    saveList: function (list) {
        $http.post('api/orgchart/saveOrgCharts', list);
    },
    delete: function (list) {
        $http.post('api/orgchart/deleteOrgChart', list);
    },
};

});

控制器

appMainModule.controller("cmOrgChartController", ['$scope', '$http', '$location', '$route', 'cmOrgChartService', function ($scope, $http, $location, $route, cmOrgChartService) {

$scope.orgChartModel = new window.Mojito.OrgChartModel();

$scope.viewList = [];
$scope.editList = [];

$scope.getList = function () {
    cmOrgChartService.getList().then(function (result) {
        $scope.viewList = (result !== null) ? result : {};
    }, function (reason) {
        console.log('Error', reason);
    });
};

$scope.getList();

$scope.edit = function (orgChart) {
    $scope.editMode = true;

    if (orgChart == null) {
        $scope.editList = $scope.viewList;
    } else {
        $scope.editList.push(orgChart);
    }
};

$scope.save = function () {
    if ($scope.editList.length == 1) {
        $scope.orgChartModel = $scope.editList[0];
        cmOrgChartService.save($scope.orgChartModel);
    } else {
        cmOrgChartService.saveList($scope.editList);
    }

    $scope.editList = [];
    $scope.editMode = false;
};

$scope.delete = function (orgChart) {
    cmOrgChartService.delete(orgChart);

    var index = $scope.viewList.indexOf(orgChart);
    $scope.viewList.splice(index, 1);
    $scope.editMode = false;
};

$scope.init = false; 
}]);

0 个答案:

没有答案