在AngularJS UI引导模式中调用另一个控制器
根据这里的示例,我有一个完全工作的ui.bootstrap.modal版本,但我想进一步将其添加到控制器配置中 也许我做得太过分了(或者做错了),但我不是一个正义的粉丝在AngularJS UI引导模式中调用另一个控制器,angularjs,angular-ui-bootstrap,Angularjs,Angular Ui Bootstrap,根据这里的示例,我有一个完全工作的ui.bootstrap.modal版本,但我想进一步将其添加到控制器配置中 也许我做得太过分了(或者做错了),但我不是一个正义的粉丝 var ModalInstanceCtrl = function ($scope... 我的模态开放控制器: var controllers = angular.module('myapp.controllers', []); controllers.controller('ModalDemoCtrl', ['$scope
var ModalInstanceCtrl = function ($scope...
我的模态开放控制器:
var controllers = angular.module('myapp.controllers', []);
controllers.controller('ModalDemoCtrl', ['$scope', '$modal', '$log',
function($scope, $modal, $log) {
$scope.client = {};
$scope.open = function(size) {
var modalInstance = $modal.open({
templateUrl: 'templates/modals/create.html',
controller: ModalInstanceCtrl,
backdrop: 'static',
size: size,
resolve: {
client: function () {
return $scope.client;
}
}
});
modalInstance.result.then(function (selectedItem) {
$log.info('Save changes at: ' + new Date());
}, function () {
$log.info('Closed at: ' + new Date());
});
};
}
]);
var ModalInstanceCtrl = function ($scope, $modalInstance, client) {
$scope.client = client;
$scope.save = function () {
$modalInstance.close(client);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
模态实例控制器:
var controllers = angular.module('myapp.controllers', []);
controllers.controller('ModalDemoCtrl', ['$scope', '$modal', '$log',
function($scope, $modal, $log) {
$scope.client = {};
$scope.open = function(size) {
var modalInstance = $modal.open({
templateUrl: 'templates/modals/create.html',
controller: ModalInstanceCtrl,
backdrop: 'static',
size: size,
resolve: {
client: function () {
return $scope.client;
}
}
});
modalInstance.result.then(function (selectedItem) {
$log.info('Save changes at: ' + new Date());
}, function () {
$log.info('Closed at: ' + new Date());
});
};
}
]);
var ModalInstanceCtrl = function ($scope, $modalInstance, client) {
$scope.client = client;
$scope.save = function () {
$modalInstance.close(client);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
但是,我想将最后一个控制器更改为:
controllers.controller('ModalInstanceCtrl', ['$scope', '$modalInstance', 'client',
function ($scope, $modalInstance, client) {
$scope.client = client;
$scope.save = function () {
$modalInstance.close(client);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
}
]);
如果我还更新$scope.open内的控制器引用,则ModalDemoCtrl控制器将
controller: controllers.ModalInstanceCtrl
然后没有错误,但是模式窗口中的保存和取消按钮不再工作
有人能指出我错在哪里吗?可能是根本不了解AngularJS中控制器的工作方式 您正在将模块引用到变量控制器 角度系统中的所有控制器都有唯一的名称
控制器仍然是“ModalInstanceCtrl”而不是“.ModalInstanceCtrl”。在$scope中指定的控制器。打开它周围所需的单引号
controller: 'ModalInstanceCtrl',
我猜将模块引用称为控制器的惯例是不正确的。谢谢@karuthan,但如果我将其引用为控制器。ModalInstanceCtrl我没有收到任何错误,但同样地,它也不起作用。如果我将其引用为ModalInstanceCtrl,则会得到错误:ReferenceError:ModalInstanceCtrl未定义Chris请尝试此插件**在控制器上尝试“ModalInstanceCtrl”。angular负责注射。:-)再次感谢@karuthan-结果我只需要在控制器名称周围加上一个引号,一切都正常了。你的plunker真的很有帮助,因为我进行了分叉和调试,使它尽可能接近我的示例。