完成数据服务添加后刷新范围

时间:2014-01-24 09:52:33

标签: angularjs

我之前很短的时间问这个问题......但我觉得这很复杂。 所以我试着在这里以更好的方式提问它。

我有一个mysql数据库,我使用php文件来添加,编辑和获取数据。

示例工作正常,但我正在寻找一种方法来添加(add() - 函数新数据到mysql数据库)刷新我的$ scope.projects。有什么想法吗?

我暂时没有将任何数据传递给save.php ......此时它是静态的。

test.factory('DataService', function ($http, $log) {

    return {

        getProjects: function ( callback ) {
            $http.get('php/data.php').success( callback );
        },

        addProject: function ( ) {
            $http.get('php/save.php');
        }


    };

});


test.controller('projects', function ( $scope, DataService ) {

    DataService.getProjects(function( results ){
        $scope.projects =  results;
    });

    $scope.add = function ( ) {
        DataService.addProject();
    };

});

3 个答案:

答案 0 :(得分:2)

你必须回复承诺:

return $http.get('php/save.php')

而不是添加功能:

DataService.addProject().than(function(){
    DataService.getProjects(function( results ){
        $scope.projects =  results;
    });
})

答案 1 :(得分:1)

如果您不想从数据库获取数据,添加后,您可以轻松地将新添加的对象推送到$ scope.projects。

一些代码:

 $scope.add = function (newProject) {
        DataService.addProject().then(function(){
           $scope.projects.push(newProject);
        });
    };

调整你的工厂:

   addProject: function (newProject) {
        $http.post('php/save.php').then(function(successResult){ 
             ...
        }, function (errorResult) {
           ...
        });
    }

答案 2 :(得分:0)

控制器:

$scope.add = function () {
  DataService.addProject({"name":this.name}).then(function () {
    DataService.getProjects(function(results){
       $scope.projects =  results;
    });
  });
};

工厂:

addProject: function (data) {
   return $http.post('php/save.php',data)
}

这是发送数据的正确方法还是更智能的?