Angular-UI模态错误:包含对象但得到数组的预期响应

时间:2015-07-30 20:48:38

标签: javascript angularjs angular-ui

首先,我知道这个错误在这里被多次覆盖,我读了很多关于这个的问题,但似乎没有人完全符合我的问题。为什么?其中大多数与Angular UI模式以及它要求显示资源的方式无关。

我开始向你展示我的控制器:

'use strict';

// Customers controller
angular.module('customers').controller('CustomersController', 
['$scope', '$stateParams', '$location', '$filter', 'Authentication', 'Customers', '$modal', '$log',
    function($scope, $stateParams, $location, $filter, Authentication, Customers, $modal, $log ) {
         // Find a list of Customers
         $scope.find = function() {
            Customers.query(function (data) {
                $scope.customers = data;
                $scope.buildPager();
             });
         };

         // Find existing Customer
         $scope.findOne = function() {
              $scope.customer = Customers.get({ 
                   customerId: $stateParams.customerId
              });
          };

          //List Pager
         $scope.buildPager = function () {
             $scope.pagedItems = [];
             $scope.itemsPerPage = 15;
             $scope.currentPage = 1;
             $scope.figureOutItemsToDisplay();
         };

        /* Modal stuff */

        $scope.animationsEnabled = true;

        $scope.openUpdateModal = function (size, selectedCustomer) {

            var modalInstance = $modal.open({
                animation: $scope.animationsEnabled,
                templateUrl: 'modules/customers/views/edit-customer.client.view.html',
                controller: function ($scope, $modalInstance, upcustomer) {
                      $scope.upcustomer = upcustomer;
                },
                size: size,
                resolve: {
                    upcustomer: function () {
                        return selectedCustomer;
                    }
                 }
            });

            modalInstance.result.then(function (selectedItem) {
                $scope.selected = selectedItem;
            }, function () {
                $log.info('Modal dismissed at: ' + new Date());
            });
       };

       $scope.toggleAnimation = function () {
           $scope.animationsEnabled = !$scope.animationsEnabled;
       };



//Controller Closing brackets    
    }
]);

在视图中我有一个客户列表,所以如果我点击其中一个,我想要打开模态:

<a data-ng-repeat="customer in pagedItems" ng-click="openUpdateModal('lg', customer)" class="list-group-item"></a>

我根据名为MEAN Stack: 20 - Pass Customer Details to an Angular UI Modal

的Bossable.com视频教程做了这件事

唯一的区别是我在点击客户时遇到此错误:

 [$resource:badcfg] Error in resource configuration. Expected response to contain an object but got an array

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

您的问题与您的Customer.query()或Customer.get()调用有关。这些是$资源调用,并期望被告知响应是什么。

通常 get 方法需要一个对象,而查询方法需要一个数组。如果您没有为这些方法返回其中一种方法,则需要根据需要使用 isArray:true / false 选项对其进行配置。

可以找到相关文档:

https://www.parse.com

$resource( 'apiendpoint', {}, {
        query: {
            isArray: false
        }
    });
}

答案 1 :(得分:0)

只需删除$scope.findOne函数,因为它使用get方法并返回和数组。如果你回顾她的教程,她会对它进行评论。