2017-04-25 70 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); 
    });