javascript - 更新模板内的文本

标签 javascript jquery html kendo-ui

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

网格初始化

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

HTML

<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函数

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如果这表明我缺少什么,而不是只是空着?

HTML

<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

var viewModel = kendo.observable({
        LotNumber: selectedLot.LotNumber,
        CatalogueNumber: selectedLot.CatalogueNumber,
        Size: selectedLot.Size
    });
    kendo.bind($("#page-template"), viewModel);

另外,有没有办法调试HTML来查看什么data是?

最佳答案

事实证明,我与选项 2 (#: LotNumber #) 的距离并不遥远,但我没有引用 Javascript viewModel 变量。此外,viewModel 变量需要具有默认值的全局作用域,并且其中的属性应在需要时 set() 进行设置。

示例

HTML 模板:

<div>Lot Number: #: viewModel.LotNumber #</div>

viewModel 声明为全局变量:

var viewModel = kendo.observable({
    LotNumber: 0,
    CatalogueNumber: 0,
    Size: "S",
    ExpiryDate: new Date()
});

assignLotDetailLabels中设置viewModel的属性:

function assignLotDetailLabels(selectedItem) {   
    viewModel.set("LotNumber", selectedItem.LotNumber);
    // all the rest of the properties to set    
}

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

关于javascript - 更新模板内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43872033/

相关文章:

javascript - Redux 是否关心我的 API 的结构?

javascript - 对话框隐藏后折叠传播不会消失

javascript - 获取 ID 的数字部分

jquery - 如何在每次关闭模态窗口时删除SimpleModal中的数据

html - 你能用 CSS3 创建这个带阴影的渐变样式线吗?

javascript - 如何在javascript中获取表格中复选框的值

javascript - 通过编程设置类(class)时,嵌套的 Accordion 表格图标不会更改

javascript - 使用innerHtml渲染html表格时停止Jquery自动触发onclick事件

jquery - 如何在此脚本中添加 cookie 来缓存样式表更改

javascript - anchor 标记不工作 Chrome 扩展