2017-04-25 38 views
0

嗨,我是想用函数返回一个数我尝试用函数返回离子,背部和

$scope.sum = function() 
{ 
    return $scope.inp + $scope.points; 
}; 

这个功能将在目标点,列名和更新记录来更新我的数据库更新数据库记录ID为1:

$scope.addPoint = function() { 

    PointService.addPoint($scope.sum, 1) 
    .then(function(result) { 
     $scope.inp = 0; 

     getMyPoints(); 
    }); 
} 

addPoint = function(id,points) 
{ 
    return $http.put(getUrlForId(1),points,name); 
} 

错误是:错误信息:无法转换类型“诠释”到外地的“System.Collections.Generic.Dictionary”

数据类型为浮动。 任何想法代码有什么问题?

回答

0

您传递函数参考PointService.addPointer(), 使用这样的:

$scope.addPoint = function() { 
 

 
    PointService.addPoint($scope.sum(), 1) // NOT PointService.addPoint($scope.sum, 1) 
 
    .then(function(result) { 
 
     $scope.inp = 0; 
 

 
     getMyPoints(); 
 
    }); 
 
}

这将执行你的功能,并通过输出(ID参数)addPoint功能,此外,为了更安全的一面,您可以从$ scope.sum()返回Number,即

$scope.sum = function() 
 
{ 
 
    return Number($scope.inp + $scope.points); 
 
};

+0

它仍然给了我同样的错误:无法INT转换为<字符串,对象>我应该转换scope.sum()来对象字符串? – Bartek

0

这看起来像一个问题,你是如何接触Backand。您可以使用下面的代码来送过来你的观点:

addPoint = function(id,points) 
{ 
    return $http.put(getUrlForId(1),points,name); 
} 

这是调用Backand API是手工构建PUT请求,并把“点”和“名称”为“数据”的旧版本和“配置”参数到$ http。通过PUT更新对象时,您需要将更新作为对象提供。所以,如果你想更新点和对象的名称(我做了一些假设,根据我可以从上面的代码片断中得知),你需要将这些属性封装在具有以下内容的对象中一般格式:

{ 
    "field_name_1":"new value_1", 
    "field_name_2":"new value_2", 
    etc ... 
} 

然后这应该作为请求的主体发送。因此,对于您的代码,将其更改为以下,看看是否有所帮助:

addPoint = function(id,points) 
{ 
    return $http.put(getUrlForId(1),{points: points, name: name}); 
} 

要查看关于为何您会看到此特定错误的详细信息,Backand取决于在身体这个JSON格式。我们的平台肯定会做更多的验证(并且我会为开发者更优雅地处理不一致的输入创建一个票据),但是现在我们只需要请求的主体,将其转换为字典对象,然后开始请求的操作。由于上述代码仅将“1.0”作为正文发送,因此无法转换为字典,从而导致堆栈异常和您看到的问题。作为说明,我们提供了一个新的SDK,它封装了这些HTTP方法,为您执行身份验证头生成和HTTP消息传递,提供处理响应的承诺。你可以在我们的Github页面上找到它https://github.com/backand/vanilla-sdk。要使用新的SDK相同的调用,代码如下所示:

backand.object.update("your object name", 1, {name: name, points: points}) 
    .then(function(response){ 
    console.log(response.data); 
    });