我有以下代码无法按预期工作,可能是因为我是角色的新手:)
每当我将新记录附加到我的数据库时,我想重新调用相同的工厂函数,因为该工厂将更新数据库数据以便实现我的html表。
问题
第二次没有调用工厂函数 getData(),所以我无法更新我的$ scope.dataTable
控制器代码
.controller('SomeViewController', function($scope, $routeParams, getData, addData) {
//scope new record
$scope.newRecordName = "";
$scope.newRecordType = "";
//to fulfill html record's table
getData.then(function(result){
$scope.dataTable = result
})
// submit button calls this
$scope.addRecord = function(){
addData.record($scope.newRecordName, $scope.newRecordType).then(function(result) {
if (result == "OK") {
//refresh scope dataTable
getData.then(function(result){
$scope.dataTable = result
})
}
})
}
工厂代码
factory('getData', function($http) {
return $http.get('some/url/')
.then(function(response) {
return response
})
})
.factory('addData', function($http) {
return {
record: function(name, type) {
return $http.post('some/url', {Name: name, Type: type})
.then(function(response) {
return response
})
}
}
})
注意我不能使用$ scope.dataTable.push('new_record_here'),因为它从数据库中删除了记录的ID,我需要有一个像这样的表: ID /名称/类型
非常感谢
答案 0 :(得分:4)
将您的工厂更改为此
.factory('dataFactory', function($http){
return {
getData : function() {
return $http.get('some/url/');
},
addData : function(name, type){
return $http.post('some/url/', {Name: name, Type: type});
}
}
})
你的控制器
.controller('SomeViewController', function($scope, $routeParams, dataFactory) {
//scope new record
$scope.newRecordName = "";
$scope.newRecordType = "";
//to fulfill html record's table
getAllData();
// submit button calls this
$scope.addRecord = function() {
dataFactory.addData($scope.newRecordName, $scope.newRecordType).then(function(result) {
if (result == "OK") {
//refresh scope dataTable
getAllData();
}
})
};
var getAllData = function() {
dataFactory.getData.then(function(result) {
$scope.dataTable = result
})
}
})