在 AngularJS/bootstrap 中将对象传递到模态对话框
passing objects to modal dialog in AngularJS/bootstrap
我正在尝试使用以下代码将对象传递到 bootstrap/angularJS 中的模态对话框中。我按照 AngularJS UI Bootstrap modal is unable to perform functions from scope 中给出的答案的样式进行了此操作。当模式窗体应该从对 editGroup() 的调用打开时,我收到以下错误:
Error: [$injector:unpr] Unknown provider: selGroupProvider <- selGroup
var EditGroupModalController = function ($scope, $modalInstance, selGroup) {
$scope.user = $sessionStorage.user;
$scope.selGroup = selGroup;
$scope.closeModal = function () {
$modalInstance.close();
};
};
$scope.editGroup = function (selGroup) { // "selGroup" receives the current Group object from $scope.groupList[]
$modal.open({
templateUrl: 'app/views/administration/advanced/editgroup.html',
controller: ['$scope', '$modalInstance','$modal','$sessionStorage','advancedService','selGroup', EditGroupModalController],
size: 'lg',
windowTemplateUrl:'app/views/partials/modaltemplatedraggable.html',
backdrop:'static',
resolve: {
item: function () {
return selGroup;
}
}
});
};
这个错误的官方描述是here;但是,我不明白为什么会收到此错误。如有任何帮助,我们将不胜感激。
- 您的控制器的依赖项列表与控制器的函数定义不匹配:在
$modal.open
中您列出了六个依赖项,而在函数中只存在三个。
- 依赖项由
resolve
键注入 - 在您的情况下,键是 item
。
为了使其正常工作,对您的代码进行必要的更改:
替换 (1)
var EditGroupModalController = function ($scope, $modalInstance, selGroup)
和
var EditGroupModalController = function ($scope, $modalInstance, $modal, $sessionStorage, advancedService, selGroup)
并替换 (2)
resolve: {
item: function () {
有
resolve: {
selGroup: function () {
您应该将解析中的变量命名为 'selGroup' 而不是 'item' 以便它可以正确注入。
此外,声明的依赖项的名称应与函数定义匹配。我整理了这个简单的演示。
angular.module('test', ['ui.bootstrap']).controller('TestController', function($scope, $modal) {
var sel = {name: "A group"};
var EditGroupModalController = function($scope, $modalInstance, selGroup) {
$scope.selGroup = selGroup;
$scope.closeModal = function() {
$modalInstance.close();
};
};
$scope.editGroup = function(selGroup) { // "selGroup" receives the current Group object from $scope.groupList[]
$modal.open({
template: '<div>Test {{selGroup.name}}</div>',
controller: ['$scope', '$modalInstance', 'selGroup', EditGroupModalController],
size: 'lg',
backdrop: 'static',
resolve: {
selGroup: function() {
return sel;
}
}
});
};
});
我正在尝试使用以下代码将对象传递到 bootstrap/angularJS 中的模态对话框中。我按照 AngularJS UI Bootstrap modal is unable to perform functions from scope 中给出的答案的样式进行了此操作。当模式窗体应该从对 editGroup() 的调用打开时,我收到以下错误:
Error: [$injector:unpr] Unknown provider: selGroupProvider <- selGroup
var EditGroupModalController = function ($scope, $modalInstance, selGroup) {
$scope.user = $sessionStorage.user;
$scope.selGroup = selGroup;
$scope.closeModal = function () {
$modalInstance.close();
};
};
$scope.editGroup = function (selGroup) { // "selGroup" receives the current Group object from $scope.groupList[]
$modal.open({
templateUrl: 'app/views/administration/advanced/editgroup.html',
controller: ['$scope', '$modalInstance','$modal','$sessionStorage','advancedService','selGroup', EditGroupModalController],
size: 'lg',
windowTemplateUrl:'app/views/partials/modaltemplatedraggable.html',
backdrop:'static',
resolve: {
item: function () {
return selGroup;
}
}
});
};
这个错误的官方描述是here;但是,我不明白为什么会收到此错误。如有任何帮助,我们将不胜感激。
- 您的控制器的依赖项列表与控制器的函数定义不匹配:在
$modal.open
中您列出了六个依赖项,而在函数中只存在三个。 - 依赖项由
resolve
键注入 - 在您的情况下,键是item
。
为了使其正常工作,对您的代码进行必要的更改:
替换 (1)
var EditGroupModalController = function ($scope, $modalInstance, selGroup)
和
var EditGroupModalController = function ($scope, $modalInstance, $modal, $sessionStorage, advancedService, selGroup)
并替换 (2)
resolve: {
item: function () {
有
resolve: {
selGroup: function () {
您应该将解析中的变量命名为 'selGroup' 而不是 'item' 以便它可以正确注入。
此外,声明的依赖项的名称应与函数定义匹配。我整理了这个简单的演示。
angular.module('test', ['ui.bootstrap']).controller('TestController', function($scope, $modal) {
var sel = {name: "A group"};
var EditGroupModalController = function($scope, $modalInstance, selGroup) {
$scope.selGroup = selGroup;
$scope.closeModal = function() {
$modalInstance.close();
};
};
$scope.editGroup = function(selGroup) { // "selGroup" receives the current Group object from $scope.groupList[]
$modal.open({
template: '<div>Test {{selGroup.name}}</div>',
controller: ['$scope', '$modalInstance', 'selGroup', EditGroupModalController],
size: 'lg',
backdrop: 'static',
resolve: {
selGroup: function() {
return sel;
}
}
});
};
});