首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模板中更新文本

在模板中更新文本
EN

Stack Overflow用户
提问于 2017-05-09 14:05:27
回答 1查看 115关注 0票数 1

我一直试图使用一些基于下拉选择的文本更新x-kendo-template中的一些x-kendo-template元素。此模板在将网格导出到PDF时使用。

网格初始化

代码语言:javascript
复制
var grid = $("#reportGrid").kendoGrid({                        
    height: "auto",
    pdf: {            
        template: kendo.template($("#page-template").html()),
        ... other options for pdf export
    },        
    ... other options for the grid
});       

代码语言:javascript
复制
<script type="text/x-kendo-template" id="page-template">
    <div>Catalogue Number: <span id="catalogueNumber_Report" data-bind="text: CatalogueNumber"></span></div>
    <div>Lot Number: #: LotNumber #</div>
    <div>Size: ${Size}</div>
    <div style="display: table-cell; width: 25%;">Expiry: <label id="expiryDateLabel_Report"></label></div>    
</script>

Javascript函数用于更新文本

代码语言:javascript
复制
function assignLotDetailLabels(selectedItem) {    
    var viewModel = kendo.observable({
        LotNumber: selectedItem.LotNumber,
        CatalogueNumber: selectedItem.CatalogueNumber,
        Size: selectedItem.Size
    });
    kendo.bind($("#page-template"), viewModel);
    $('#expiryLabel_Report').text(selectedItem.ExpiryDate);
}

到目前为止,所有这些都没有对我起作用(没有一个标签是用相关字段填充的)。我该怎么做呢?

编辑

HTML更改为访问data属性将返回undefined,而不是仅为空--如果这表明了我所缺少的内容?

代码语言:javascript
复制
<script type="text/x-kendo-template" id="page-template">
    <div>Catalogue Number: #: data.CatalogueNumber #</div>
    <div>Lot Number: #: data.LotNumber #</div>
    <div>Size: #: data.Size #</div>
    <div>Expiry: #: data.ExpiryDate #</div> 
</script>

Javascript

代码语言:javascript
复制
var viewModel = kendo.observable({
        LotNumber: selectedLot.LotNumber,
        CatalogueNumber: selectedLot.CatalogueNumber,
        Size: selectedLot.Size
    });
    kendo.bind($("#page-template"), viewModel);

此外,是否有一种方法来调试HTML来查看data是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 09:36:00

结果,我在选项2 (#: LotNumber #)上没有太远,但是我没有引用Javascript viewModel变量。此外,viewModel变量需要具有默认值的全局范围,并且在需要时,其中的属性应该是set()

示例

HTML模板:

代码语言:javascript
复制
<div>Lot Number: #: viewModel.LotNumber #</div>

viewModel声明为全局变量:

代码语言:javascript
复制
var viewModel = kendo.observable({
    LotNumber: 0,
    CatalogueNumber: 0,
    Size: "S",
    ExpiryDate: new Date()
});

viewModel在assignLotDetailLabels中的集合属性

代码语言:javascript
复制
function assignLotDetailLabels(selectedItem) {   
    viewModel.set("LotNumber", selectedItem.LotNumber);
    // all the rest of the properties to set    
}

最后但并非最不重要的一点是,可以使用模板viewModel中的控制台输出来查看# console.log(viewModel) #变量的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43872033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档