Angular-ui-bootstrap 模式和打字稿

2023-12-29

我正在将 ngDialog 与 Angular 和 Typescript 一起使用,但是我正在尝试更改为 Angular-ui-boostrap 模式,因为它看起来更酷且更易于使用。

我有一个场景,我使用例如 AddressListController 显示记录列表,并且用户单击记录,例如地址,然后我显示模态,以便用户可以编辑/删除记录。或者,用户可以选择添加来添加应显示模式的新记录。我想将记录(地址)的保存/更新/删除委托给地址控制器,例如地址控制器。

我遇到的问题是模式正在显示,但数据未填充。我不确定我在模板中使用的语法是否正确?另外,我更喜欢controllerAs 语法。

我的代码如下:

在列表控制器中:

 selectAddress(index: number): void {
        var address = this.contactAssocitedRecords.Addresses[index];
        this.edit(address);
    }

    edit(item: Address) {

        var promise = this.addressService.getAddressWithInfo(item.Id);
        promise.then((response: ng.IHttpPromiseCallbackArg<AddressInfo>) => {
            var addressInfo = response.data;
            console.log(addressInfo); **// This returns all data**

            var options: ng.ui.bootstrap.IModalSettings = {
                templateUrl: "/js/controllers/_MaintainAddress.Html",
                controller: 'CRM.Contacts.AddressController as addressCtrl',
                windowClass: 'app-modal-window',
                resolve: {
                    addressInfo: () => addressInfo 
                }
            };

            this.$uibModal.open(options).result
                .then(updatedItem => this.savedAddress(updatedItem));
            },
            error => {
                this.popupService.showError(error.data.message);
            });

     }


    savedAddress(item: any): void {
        console.log(item);
    }

地址控制器:

module CRM.Contacts {

export class AddressController {

    private scope: ng.IScope;
    static $inject = ["$http", "CRM.Contacts.ContactService", "CRM.Common.PopupService", "ngDialog",
        '$uibModalInstance'];

    constructor(private $http: ng.IHttpService, private contactService: ICrudService<Contact>,
        private popupService: CRM.Common.IPopupService,
        private ngDialog: angular.dialog.IDialogService,
        private $uibModalInstance: ng.ui.bootstrap.IModalServiceInstance) {


    }

    save(addressToSave: Address) {
        // TODO: do the actual saving

        console.log(addressToSave);
        this.$uibModalInstance.close(addressToSave);
    }

}

angular.module("CRM").controller("CRM.Contacts.AddressController", AddressController);

}

模板:

        <!-- Form Name -->
        <legend>Edit Address...</legend>

        <!-- Text input-->
        <div class="form-group col-md-6">
            <label class="col-md-4 control-label" for="Id">Id:</label>
            <div class="col-md-8">
                <input id="Id" name="Id" ng-disabled="true" type="text" ng-model="addressCtrl.addressInfo.Address.Id" placeholder="Id" class=" form-control">

            </div>
        </div>

        <!-- Text input-->
        <div class="form-group col-md-6">
            <label class="col-md-4 control-label" for="streetNo">Street No:</label>
            <div class="col-md-8">
                <input id="streetNo" name="streetNo" type="text" ng-model="addressCtrl.addressInfo.Address.StreetNo" placeholder="Street No" class=" form-control" required="">

            </div>
        </div>

        <!-- Text input-->
        <div class="form-group col-md-6">
            <label class="col-md-4 control-label" for="streetName">Street Name:</label>
            <div class="col-md-8">
                <input id="streetName" ng-model="addressCtrl.addressInfo.Address.StreetName" name="streetName" type="text" placeholder="Street Name" class=" form-control" required="">

            </div>
        </div>

        // removed for brevity

        <div class="form-group col-md-offset-8">
            <label class="col-md-4 control-label" for="save"></label>
            <div class="col-md-8">
                <button id="save" title="Save new record" data-toggle="tooltip" data-placement="right" name="submit"
                        ng-click="addressCtrl.save(addressCtrl.addressInfo.Address)" class="btn btn-success" ng-disabled="addNewAddress.$invalid">
                    <span class="glyphicon glyphicon-floppy-disk"></span>
                </button>

            </div>
        </div>

    </fieldset>
</form>

在您的 AddressController 中,您应该注入 addressInfo 并将其公开,以便模板可以访问它。数据将来自解析函数。

The AddressController应该像这样:

module CRM.Contacts {
    export class AddressController {
        private scope:ng.IScope;
        static $inject = ["$http", "CRM.Contacts.ContactService", "CRM.Common.PopupService", "ngDialog",
            '$uibModalInstance', 'addressInfo'];

        constructor(private $http:ng.IHttpService, 
                    private contactService:ICrudService<Contact>,
                    private popupService:CRM.Common.IPopupService,
                    private ngDialog:angular.dialog.IDialogService,
                    private $uibModalInstance:ng.ui.bootstrap.IModalServiceInstance,
                    public  addressInfo:any) {
        }

        save(addressToSave:Address) {
            // TODO: do the actual saving

            console.log(addressToSave);
            this.$uibModalInstance.close(addressToSave);
        }
    }
    angular.module("CRM").controller("CRM.Contacts.AddressController", AddressController);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular-ui-bootstrap 模式和打字稿 的相关文章

随机推荐

  • 存储我的应用程序特定数据的正确位置在哪里?

    我正在开发一个小型 C Winforms 游戏 我想要做的事情之一是保存应用程序特定的数据 然而 我有点难以理解应该存储的正确位置 据我所知 应用程序可能存储多种类型的数据 因此保存数据的位置也不同 1 应用属性 设置 例如应用程序存储数据
  • 使用 cypress 选择下拉列表项

    我需要使用 cypress 测试 angularjs 应用程序的下拉菜单 我需要单击下拉列表 然后从下拉列表中选择或单击一个项目 我尝试如下 它适用于一个实例 但不适用于其他时间 因为第二个 get 方法中的 id 号在动态生成时不断变化
  • 评级问题

    我在使用 jquery ui 单选按钮集创建评级代码时遇到问题 它将集成到内容管理中 因此我不想使用 ID 并限制编码限制 我已经使用数组完成了 90 的工作 但是当我从下到上选择时 它无法正常工作 任何人都可以帮忙解决这个问题吗 谢谢
  • 如何在 Silverlight 4 应用程序中获取 Outlook 2003 数据

    是否可以将 Outlook 2003 自动化与 Silverlight 4 结合使用 或者也许有一些不同的方法可以在 Silverlight 应用程序中使用 Outlook 2003 MAPI 我正在使用 Silverlight 4 并尝试
  • Bootstrap模式弹出确认防止多次点击

    button name remove levels on click function e var form this closest form e preventDefault confirm modal backdrop static
  • 从 Python 脚本子进程获取输出

    这可能是一个愚蠢的问题 但我有一个启动子进程的 Python 脚本 也是一个 Python 脚本 并且我需要该子进程返回三个整数 如何从启动子进程的 Python 脚本获取这些返回值 我是否必须将整数输出到标准输出 然后使用 check o
  • SharedPreferences.onSharedPreferenceChangeListener 未被一致调用

    我正在注册一个像这样的首选项更改侦听器 在onCreate 我的主要活动 SharedPreferences prefs PreferenceManager getDefaultSharedPreferences this prefs re
  • 适用于 Android 的 Google Play 音乐 API

    我正在开发一款 Android 音乐应用程序 我需要两件事 获取艺术家的专辑封面 专辑名称 曲目名称等 打开 Google Play 页面购买这张专辑 首先我目前正在使用iTunes API http www apple com itune
  • 如何操作 jqGrid 的搜索/过滤器?

    我有一个带有导航栏的 jqGridsearch true and multipleSearch true 我想在我的 UI 中添加一个按钮 自动向搜索添加附加规则 我尝试直接操作过滤器的 postData 但以这种方式添加的值不会显示在搜索
  • Java VS C# 中的 intBitsToFloat 方法?

    在 C 中将位转换为浮点数时 我得到了错误的数字 让我们使用这个位number 1065324597 In Java 如果我想从位转换为浮点数 我会使用intBitsToFloat method int intbits 1065324597
  • 在 BigQuery 中安排查询

    我有一个 BigQuery 查询 它将两个表联合起来 每日 Google Analytics 导出 我想要的是将查询保存为视图或表 但随着新的 Google Analytics 数据加载到 BigQuery 中 最终视图 表每天会自动更新
  • 如何使用 FileProvider 共享任意路径的文件?

    我的应用程序允许用户下载一些内容并将其存储在他选择的文件夹中 我想创建一个 ContentProvider 来共享这些文件 但当下载的文件存储在应用程序默认路径之外时 我不知道该怎么做 我试图声明以下文件路径
  • 所有 gms/firebase 库必须使用完全相同的版本规范 Android Studio

    我知道这个问题已经被问过很多次了 但我无法弄清楚 让我解释一下 5 月 2 日 Firebase 宣布 Firebase Android SDK 现在拥有独立的版本号 检查这里 Firebase Android 发行说明 https fir
  • .NET webservice - 快速确认,但继续在后台处理

    我正在构建一个将由供应商的应用程序使用的 NET Web 服务 但我不确定如何完成以下任务 供应商将致电我的网络服务并提供一些信息 但希望快速返回确认信息 仅说明我收到了他们的信息 他们不关心我用它做什么 也不想确认我已经完成处理 我传递的
  • 重新排序数组

    比如说 我有一个如下所示的数组 var playlist artist Herbie Hancock title Thrust artist Lalo Schifrin title Shifting Gears artist Faze O
  • 将 Bladejs 与 Meteor 结合使用

    我最近将节点刀片智能包添加到我的流星中 并且静态内容显示良好 但是 我无法使用任何模板变量 在我安装 Blade 之前 模板变量与车把配合得很好 有人知道我做错了什么吗 控制台输出 ReferenceError player is not
  • 是否可以将 MKS Integrity 存储库导入 git 中?

    我只需要源树及其历史记录 我现在不关心需求 问题 我用命令行玩了一下 看看是否可以获得主干和一些开发路径的更改包列表 我认为应该可以为每个更改包提取差异 并使用它来重放自 git 中第一次提交以来的所有更改 像这样的东西 获取第一个提交并将
  • !clrstack -p 不给出调用堆栈中方法的参数值

    我们正在尝试使用 Windbg 分析 w3wp 内存转储 我们发现 w3wp 进程由于堆栈溢出而崩溃 我加载了 psscor4 dll 并通过发出 clrstack 获取了调用堆栈 但我也想知道传递给方法的参数 如果我发出 clrstack
  • 从自定义视图启动 AsyncTask 的最佳实践

    产生耗时的计算线程是很常见的 稍后我们需要更新Activity or Fragment与计算结果 我一直遵循以下准则 到目前为止 它对我来说效果很好 AsyncTask需要onPostExecute UI Fragment Use setR
  • Angular-ui-bootstrap 模式和打字稿

    我正在将 ngDialog 与 Angular 和 Typescript 一起使用 但是我正在尝试更改为 Angular ui boostrap 模式 因为它看起来更酷且更易于使用 我有一个场景 我使用例如 AddressListContr