$save 给了我 TypeError: undefined is not a function when save model that is a list in angular

Posted

技术标签:

【中文标题】$save 给了我 TypeError: undefined is not a function when save model that is a list in angular【英文标题】:$save gives me TypeError: undefined is not a function when saving model that is a list in angular 【发布时间】:2014-11-21 21:29:18 【问题描述】:

我正在使用当前版本的 asp.net、mvc、rest api 和 angular.js。我用一个列表填充我的页面然后在 $save 它给我错误 TypeError: undefined is not a function

    $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);
        
    );

我希望这是足够的信息。到目前为止,我没有遇到任何问题,唯一不同的是我保存的是一个列表而不是单个对象。在调试中,我可以看到填充视图模型 scacTaskPLDetails 的对象列表。

【问题讨论】:

$scope.scacTaskPLDetails 是一个项目数组。如果您在开发工具中检查它们,您会发现它是资源实例的集合,每个实例都有 $save 方法 谢谢,我可以在逐步执行 save 方法时查看实例,它包含我的实例。这就是为什么当我收到错误 Undefined: is not a function 时我感到困惑的原因。 【参考方案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);
        
    );

【讨论】:

我会在星期一试试这个,不能在家工作。使用资源 $save 的原因是因为我有收藏吗?我问的原因是因为我使用的模式在这个项目中一直有效,但我一直只保存单个视图模型对象而不是集合。 很有趣,我从未见过这种方法,尝试用资源来做,让我知道,祝你好运 尝试了几种方法,仍然 TypeError: undefined is not a function。我们一直在使用资源来配置对 api 的调用,然后将结果推送到我们的本地视图模型中。使用单个实例它可以正常工作,但使用集合......好吧没有骰子。 你试过这样的***.com/questions/20150544/…【参考方案2】:

感谢您的提示。我终于用 isArray: true 来保存我的收藏了

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

]);

【讨论】:

是的,这就是我向您发送有关该主题的链接的原因,我很高兴它成功了,干杯!

以上是关于$save 给了我 TypeError: undefined is not a function when save model that is a list in angular的主要内容,如果未能解决你的问题,请参考以下文章

当我“ng serve”时,Angular CLI 给了我“TypeError: callbacks[i] is not a function”

android 当我转到 API>19 时,我的 Java 接口给了我“TypeError: Android.mthod is not a function

NodeJS Mongoose record.save TypeError

MetaMask 不注入 window.ethereum: Uncaught (in promise) TypeError: Cannot read property 'request' of und

Magnific Popup: application-3f3c3e8….js:15011Uncaught TypeError: Cannot read property 'open' of unde

PHP for 循环不适用于 jQuery API(未捕获的 TypeError)