我对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;
}]);