通过 AngularJS 中的路径位置获取控制器
Get controller by path location in AngularJS
我正在用 ui.bootstrap
开发一个简单的模式 window。当我们单击绑定到控制器的某个按钮并启动时,会显示此模态,但模态及其内容绑定到另一个控制器,因此当我们单击时,有必要知道控制器的位置,它将在另一个文件夹中项目的。
例如成像结构如下:
组件1
..... template1.html
..... controller1.js
组件2
..... template2.html
..... controller2.js
controller1.js
负责加载渲染的模态视图,分别与template2.html
和controller2.js
绑定。所以,在 controller1.js
中我们有这个:
$scope.open = function (size) {
var modalInstance = $uibModal.open({
templateUrl: 'components/component2/template2.html',
controller: 'components/component2/controller2.js',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
$log.debug(selectedItem);
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
这显然不适用于 controller2.js
。正如我们所做的那样 templateUrl
,有任何方法可以加载一个控制器,将其路径作为参数传递给 $uibModal.open
?
我还没有测试过,但可以这样做:
var modalInstance = $uibModal.open({
templateUrl: 'components/component2/template2.html',
controller: 'ModalController',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
app.controller('ModalController', function ($scope, $modalInstance) {
// do some things
});
我正在用 ui.bootstrap
开发一个简单的模式 window。当我们单击绑定到控制器的某个按钮并启动时,会显示此模态,但模态及其内容绑定到另一个控制器,因此当我们单击时,有必要知道控制器的位置,它将在另一个文件夹中项目的。
例如成像结构如下:
组件1
..... template1.html
..... controller1.js
组件2
..... template2.html
..... controller2.js
controller1.js
负责加载渲染的模态视图,分别与template2.html
和controller2.js
绑定。所以,在 controller1.js
中我们有这个:
$scope.open = function (size) {
var modalInstance = $uibModal.open({
templateUrl: 'components/component2/template2.html',
controller: 'components/component2/controller2.js',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
$log.debug(selectedItem);
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
这显然不适用于 controller2.js
。正如我们所做的那样 templateUrl
,有任何方法可以加载一个控制器,将其路径作为参数传递给 $uibModal.open
?
我还没有测试过,但可以这样做:
var modalInstance = $uibModal.open({
templateUrl: 'components/component2/template2.html',
controller: 'ModalController',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
app.controller('ModalController', function ($scope, $modalInstance) {
// do some things
});