首先,我知道这个错误在这里被多次覆盖,我读了很多关于这个的问题,但似乎没有人完全符合我的问题。为什么?其中大多数与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
感谢您的时间。
答案 0 :(得分:0)
您的问题与您的Customer.query()或Customer.get()调用有关。这些是$资源调用,并期望被告知响应是什么。
通常 get 方法需要一个对象,而查询方法需要一个数组。如果您没有为这些方法返回其中一种方法,则需要根据需要使用 isArray:true / false 选项对其进行配置。
可以找到相关文档:
$resource( 'apiendpoint', {}, {
query: {
isArray: false
}
});
}
答案 1 :(得分:0)
只需删除$scope.findOne
函数,因为它使用get方法并返回和数组。如果你回顾她的教程,她会对它进行评论。