【问题标题】:Using Aurelia Dialog with Aurelia Kendo Bridge将 Aurelia Dialog 与 Aurelia Kendo Bridge 一起使用
【发布时间】:2016-03-24 16:15:21
【问题描述】:

如何在 Aurelia 对话框中实现 Kendo 网格? 当我单击应用程序中的按钮时,会出现一个对话框,但是如何将我的数据传输到该对话框?

这是我的发货详情页面的一部分,当单击剑道网格内的按钮时,对话框会成功打开

clickInventory() {
   var self = this;
   $('#reservations .au-target.k-button').on('click', function (e) {
       //OrderLineKey opvragen van het item waarop werd geklicked
       var itemCode = $('#reservations .k-grid').data("kendoGrid").dataItem($(e.currentTarget).closest("tr")).ItemCode;
       console.log(itemCode);
       (self.dialogService).open({ viewModel: InventoryDialog}).then(response => {
           if (!response.wasCancelled) {
               this.datasource = {
                   transport: {
                       read: '//localhost:8741/BatchBirdService/json/GetInventory/' + itemCode
                   },
                   pageSize: 5
               };
               /*self.http.fetch('http://localhost:8741/BatchBirdService/json/GetInventory/' + itemCode, {
                   method: "delete"
               })/*.then(response => {
                   self.updateContacts();
               });*/
           }
        });
  });
}

inventoryDialog.html

<template>
<ai-dialog>
    <ai-dialog-body>
        <h3>IT WORKS ${inventory.ItemCode}</h3>
        <ak-grid id="inventory" k-data-source.bind="datasource" k-pageable.bind="pageable" k-sortable.bind="true" k-selectable="row">
            <ak-col k-field="Quantity"></ak-col>
            <ak-col k-field="Warehouse"></ak-col>
            <ak-col k-title="Warehouse Location" k-field="WarehouseLocation"></ak-col>
            <ak-col k-field="Lot"></ak-col>
            <ak-col k-title="Expiration Date" k-field="ExpirationDate"></ak-col>
        </ak-grid>
    </ai-dialog-body>
    <ai-dialog-footer>
        <button class="btn btn-default" click.trigger="controller.cancel()">Cancel</button>
        <button class="btn btn-primary" click.trigger="controller.ok()">Delete Contact</button>
    </ai-dialog-footer>
</ai-dialog>

inventoryDialog.ts

import {inject} from "aurelia-framework";
import {DialogController} from "aurelia-dialog";

@inject(DialogController)
export class InventoryDialog {
inventory: any;

constructor(private controller: DialogController) {
    this.controller = controller;
}

activate(inventory) {
    this.inventory = inventory;
}
}

【问题讨论】:

    标签: kendo-grid aurelia aurelia-dialog


    【解决方案1】:

    基本上我所要做的就是将我的 itemCode 传递给 inventoryDialog,如下所示:
    shippingDetails.ts

    clickInventory() {
       var self = this;
       //Bij een klik op de button wordt inventoryDialog getoond
       $('#reservations .au-target.k-button').on('click', function (e) {
           //OrderLineKey opvragen van het item waarop werd geklicked
           var itemCode = $('#reservations .k-grid').data("kendoGrid").dataItem($(e.currentTarget).closest("tr")).ItemCode;
           console.log(itemCode);
           (self.dialogService).open({ viewModel: InventoryDialog, model:itemCode})
      });
    }
    

    inventoryDialog.ts

    import {inject} from "aurelia-framework";
    import {DialogController} from "aurelia-dialog";
    
    @inject(DialogController)
    export class InventoryDialog {
    
    constructor(private controller: DialogController) {
        this.controller = controller;
    }
    
    activate(itemCode) {
        this.itemCode = itemCode;
        this.datasource = {
            transport: {
                read: '//localhost:8741/BatchBirdService/json/GetInventory/' + itemCode
            },
            pageSize: 5,
            schema: {
                model: {
                    id: 'ItemCode',
                    fields: {
                        ItemCode: { editable: false },
                        Quantity: { editable: false },
                        Warehouse: { editable: false },
                        WarehouseLocation: { editable: false },
                        Lot: { editable: false },
                        ExpirationDate: { editable: false }
                    }
                }
            }
        };
      }
    }
    

    inventoryDialog.html(这里没有改变)

    <template>
    <ai-dialog>
        <ai-dialog-body>
            <h3>Select a location to pick from</h3>
            <ak-grid id="inventory" k-data-source.bind="datasource" k-pageable.bind="pageable" k-sortable.bind="true" k-selectable="row">
                <ak-col k-field="Quantity"></ak-col>
                <ak-col k-field="Warehouse"></ak-col>
                <ak-col k-title="Location" k-field="WarehouseLocation"></ak-col>
                <ak-col k-field="Lot"></ak-col>
                <ak-col k-title="Expiration Date" k-field="ExpirationDate"></ak-col>
            </ak-grid>
        </ai-dialog-body>
        <ai-dialog-footer>
            <button class="btn btn-primary" click.trigger="controller.ok()">Ok</button>
            <button class="btn btn-default" click.trigger="controller.cancel()">Cancel</button>
        </ai-dialog-footer>
    </ai-dialog>
    </template>
    

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多