gpt4 book ai didi

javascript - 如何在 typescript 中使用 angular-ui-bootstrap(模态)?

转载 作者:可可西里 更新时间:2023-11-01 02:32:10 25 4
gpt4 key购买 nike

我想使用模态编辑表格中的一些数据。 definitelyTyped 的 angular-ui-bootstrap 的 typescript 定义中有各种接口(interface),但是它们没有记录,我找不到任何关于如何使用它们的示例。

  • IModalScope
  • IModalService
  • IModalServiceInstance
  • IModalSettings
  • IModalStackService

https://github.com/borisyankov/DefinitelyTyped/blob/master/angular-ui-bootstrap/angular-ui-bootstrap.d.ts#L146

我想实现的是这样的:

layout

我是否可以假设 ItemsListController 和 ItemDetailModalController 都需要一个相同范围的实例来交换数据?以及如何使用上述接口(interface)为模态指令定义 Controller 和模板?

我已经在这里找到了这个非 typescript 示例:https://angular-ui.github.io/bootstrap/#/modal

但是,作为初学者,如果示例将所有内容都放在一个文件中而不分离关注点,我很难理解会发生什么。

最佳答案

angular 注入(inject)的实例将是 ng.ui.bootstrap.IModalService 类型。

并且由于您使用的是“controller as”语法,因此无需在此处开始使用 $scope,而是可以使用 resolve,如 angular-ui modal example 中所示.

示例代码如下:

class ItemsListController {
static controllerId = 'ItemsListController';
static $inject = ['$modal'];

data = [
{ value1: 'Item1Value1', value2: 'Item1Value2' },
{ value1: 'Item2Value1', value2: 'Item2Value2' }
];

constructor(private $modal: ng.ui.bootstrap.IModalService) { }

edit(item) {
var options: ng.ui.bootstrap.IModalSettings = {
templateUrl: 'modal.html',
controller: ItemDetailController.controllerId + ' as modal',
resolve: {
item: () => item // <- this will pass the same instance
// of the item displayed in the table to the modal
}
};

this.$modal.open(options).result
.then(updatedItem => this.save(updatedItem));
//.then(_ => this.save(item)); // <- this works the same way as the line above
}

save(item) {
console.log('saving', item);
}
}

class ItemDetailController {
static controllerId = 'ItemDetailController';
static $inject = ['$modalInstance', 'item'];

constructor(private $modalInstance: ng.ui.bootstrap.IModalServiceInstance, public item) { }

save() {
this.$modalInstance.close(this.item); // passing this item back
// is not necessary since it
// is the same instance of the
// item sent to the modal
}

cancel() {
this.$modalInstance.dismiss('cancel');
}
}

关于javascript - 如何在 typescript 中使用 angular-ui-bootstrap(模态)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27803691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com