2014-11-21 67 views
0

我使用的是當前版本的asp.net,mvc,rest api和angular.js。我填充我的頁面列表,然後在$保存它給了我錯誤類型錯誤:未定義是不是一個函數

$scope.scacTaskPLDetails = {}; 

    $scope.onGetTaskList = function() { 
    var scacTaskRes = $resource("api/ScacTaskPLDetails"); 
    scacTaskRes.query({ taskID: scacTaskID }, function (scacTaskPL) { 
     $scope.scacTaskPLDetails = scacTaskPL; 
    }); 
} 
/************************ Save Task **************************/ 
$scope.onSaveScacTask = function() { 
    if (!$scope.isEditing) { 
     $scope.$broadcast('show-errors-event'); 
     if ($scope.TaskForm.$invalid) { return; } 
     $scope.$broadcast('show-errors-event'); 
     if ($scope.TaskForm.$invalid) { return; } 
    } 

    $scope.scacTaskPLDetails.$save(function (results) { 
     if (results.successful) { 
      Notifications.success(results.serverMessage); 
      $scope.onReloadPage(); 
     } 
     else { 
      Notifications.error(results.serverMessage); 
     } 
    }); 
} 

我希望這是足夠的信息。到目前爲止,我一直沒有遇到任何麻煩,唯一不同的是我保存了一個列表而不是單個對象。在調試中,我可以看到填充viewmodel scacTaskPLDetails的對象列表。

+0

'$ scope.scacTaskPLDetails'是一個項目數組。如果您在開發工具中檢查它們,您會看到它是Resource實例的集合,其中每個實例都有$ save方法 – 2014-11-21 21:40:07

+0

謝謝,我可以在逐步執行save方法時查看實例,並且它包含我的實例。這就是爲什麼當我得到錯誤Undefined時,我感到困惑:不是一個函數。 – 2014-11-22 22:38:11

回答

1

你應該用你的資源的動作發送到您的endopint,不響應你從資源

了嘗試像

var scacTaskRes = $resource("api/ScacTaskPLDetails"); 

    $scope.scacTaskRes.$save(function (results) { 
     if (results.successful) { 
      Notifications.success(results.serverMessage); 
      $scope.onReloadPage(); 
     } 
     else { 
      Notifications.error(results.serverMessage); 
     } 
    }); 
+0

我會在星期一嘗試這個,不能在家工作。是因爲我有一個集合使用資源$ save的原因嗎?我問的理由是因爲我使用的模式一直在這個項目中工作到現在,但我一直只保存單個視圖模型對象而不是集合。 – 2014-11-22 22:45:25

+0

有趣我從來沒有見過這種方法,試着用資源做,並讓我知道,祝你好運 – 2014-11-24 13:29:06

+0

嘗試了幾種方法,仍然TypeError:undefined不是一個函數。我們一直在使用資源來配置對api的調用,然後將結果推送到我們的本地視圖模型中。使用單個實例,它可以很好地工作,但是有一個集合...沒有骰子。 – 2014-11-24 13:43:35

0

感謝您的提示。我終於把它用isArray保存起來了:true

app.factory("SaveArrayOfTaskPLObjects", ['$resource', function ($resource) { 
return $resource(
    "api/ScacTaskPLDetails", 
    {}, 
    { 
     save: { 
      method: 'POST', 
      isArray: true 
     } 
    } 
); 

}]);

+0

是的,那爲什麼我給你發了關於這個話題的鏈接,我很高興它的工作,歡呼! – 2014-11-24 19:13:56

相關問題