如何从kendo模板调用打字稿函数

时间:2014-04-13 02:19:47

标签: templates kendo-ui typescript

我在我的项目中使用Typescript和Kendo UI。它工作正常,直到我想通过调用网格模板中的函数来自定义网格数据。我将模板更新为:

    <td>#= Simple(Id) #</td>

并添加了该功能。它工作正常并在单元格中显示id。

<script>
    function Simple(id) {
        return id;
    }
</script>

问题是我想在我的Typescript类中定义Simple方法,但是我不能正确地获得该函数的范围。我试图将它添加到我的视图类或dataSource,但没有任何效果。由于函数未定义,因此无法呈现列。我不想定义全局函数。如何将typescript类中定义的函数绑定到网格?

3 个答案:

答案 0 :(得分:0)

通常,传递给模板的内容是Kendo模型的实例,因此您必须在kendo.data.Model.fn上定义方法。

答案 1 :(得分:0)

您需要在全局范围内声明它。

def test_should_create_project(pro_profile, user_profile):
    assert user_profile.user != pro_profile.user

参考:Not able to call function in typescript from kendo template in kendotreelist

答案 2 :(得分:0)

我知道这是一个古老的问题,但我遇到了类似的问题并找到了解决方法。

在你的cshtml文件中。你需要引用你生成的javascript文件,然后像这样实例化对象

<script src="@Url.Content("~/Scripts/Notifications/notifications.js")"> </script>
<script>
    var fe_head = new Fe.Upsm.Head();
    var fe_n = new Fe.Upsm.Notifications();
</script>

然后在你的打字稿文件中我使用名称空间和类似

namespace Fe.Upsm {
    export class Notifications {
        .. methods
        NotificationsGrid_onDataBound(){
        ... code here
        }
        ... more methods

    }
}

在剃刀中

@(Html.Kendo().Grid<NotificationViewModel>()
      .Name("NotificationsGrid")
      .AutoBind(false)
      .NoRecords("No notifications yet")
      .TableHtmlAttributes(new { @class = "table" })
      .Events(m => m.DataBound("fe_n.NotificationsGrid_onDataBound")) // because you have instantiated your object you then qualify it the object name you have newed up the instance of and the method
..... more grid values

希望如果遇到任何问题,这可以解决任何问题