计算字段未使用Kendo-UI网格和AngularJS进行更新

时间:2014-08-30 22:09:40

标签: angularjs kendo-ui

我有一个带有订单行的kendo-ui网格。有一个QtyPriceTotal列。总计列计算为( Qty x Price )

为了进行编辑,我使用自定义弹出窗口显示一些其他信息,并允许用户更改QtyPrice。当他们这样做时,我希望Total在自定义编辑表单中自动更新。

以下是总列的网格列定义:

{
   field: "total",
   title: "Total",
   width: 60,
   template: "#=qty*price#"
}

以下是编辑表单中的输入字段:

<input name="total" style="width: 60px" />

以下是问题:当我在编辑表单中更改数量或价格时,总数仅在网格中显示(在弹出式编辑表单下方),但总数编辑表单中的字段不是(它是空的)。

作为测试,我将#=total##=qty*price#放在编辑表单中;

  • 前者为空
  • 后者是静态数字,是结果 表单呈现时的计算

它没有得到更新。

这是一个显示问题的Plunker: http://plnkr.co/edit/cZw18btauqb9RPEpd5Kc?p=preview

如何计算编辑表单中的总字段? (最好使用Kendo-ui模板机制或AngularJS,但jQuery hack会作为最后的手段)?

2 个答案:

答案 0 :(得分:4)

模板不提供双向数据绑定,因此它们在首次生成后不会自动更新。

您可能希望在数据源架构中使用模型的计算字段:

schema: {
    model: {
        id: "itemNo",
        fields: {
            id: {
                type: "string",
                editable: false
            },
            price: {
                type: "number"
            },
            qty: {
                type: "number"
            }
        },
        total: function () {
            return this.get("qty") * this.get("price");
        }
    }
},

demo

答案 1 :(得分:2)

此外,如果您正在使用“incell”编辑,则可以使用grid dataSource的“change”事件来跟踪连接字段中的更改并强制计算字段进行更新。这样的例子可能是:

Grid: Incell editing with calculated column auto refresh