2014-01-24 31 views
1

我之前问的问题很短的时间......但我认为它是复杂的。 所以我要问它在这里一个更好的办法。刷新范围完成

我有一个MySQL数据库和我使用的PHP文件添加,编辑和获取数据。

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

我没有任何数据传递到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(); 
    }; 

}); 

回答

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) { 
      ... 
     }); 
    } 
+0

当有mysql错误时,那么函数als会被触发?是不是最好从SQL获取数据,看看它真的加入? – nofear87

+0

编号then()函数在操作完成后调用并包含两个参数(回调函数)。第一个回调乐趣 - 成功结果,第二个错误结果。 我用例子更新了我的答案。 –

+0

不错。多数民众赞成什么,我需要;-) – nofear87

2

你必须返回承诺:

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

,比附加功能:

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

不是必须呢? – nofear87

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

这是发送数据的正确方法或者是有一个更聪明吗?