自定义HTML帮助器以添加Javascript函数

时间:2016-08-26 23:06:34

标签: javascript kendo-ui html-helper

我设置了一个Kendo Window HTML Helper来显示基于用户操作的消息。它只是为了显示消息而消失,然后淡出。由于这个帮助程序将在每个页面上使用并且永远不会更改,因此我决定将其包装在自定义HTML帮助程序中。它看起来像这样:

        public static Kendo.Mvc.UI.Fluent.WindowBuilder CustomWindow(this HtmlHelper helper)
    {
        var animationOpen = new Action<PopupAnimationBuilder>(x => x.Open(open => open.Fade(FadeDirection.In).Zoom(ZoomDirection.In).Duration(700).Expand(ExpandDirection.Vertical)));
        var animationClose = new Action<PopupAnimationBuilder>(x => x.Close(close => close.Fade(FadeDirection.Out).Zoom(ZoomDirection.Out).Duration(700).Expand(ExpandDirection.Vertical)));
        var window = helper.Kendo().Window().Name("window").Animation(animationOpen).Animation(animationClose).Width(500).Visible(false).Title("Notice");
        return window;
    }

这很完美但我也有一个javascript函数我想成为一个窗口对象本身的方法。该函数如下所示:

            function showMessage(message, title) {

            if (title === null) title = "Notice";
            var window = $("#window").data("kendoWindow");
            window.content("<div style='text-align: center;'><p>" + message + "</p></div>");
            window.showWindow();
            window.title(title);
            window.open();
            setTimeout(function () {
                window.close();
            }, 1400);
        }

有没有办法可以从我的自定义帮助器中发出这个,理想情况下是附加它做窗口对象所以我可以做这样的事情:

var window = $("#window").data("kendoWindow");
window.showMessage('Hello');

感谢您的帮助

厄尔

2 个答案:

答案 0 :(得分:0)

我无法理解你的问题并且清楚,但是根据我的理解,我猜你正在尝试将一个函数作为属性添加到一个对象。如果这就是您所需要的,那么您可以按照

进行操作

window.showMessage = function (message, title) { // function statements goes here }

现在showMessage函数将在window对象中可用,因此您可以像

一样进行访问
window.showMessage("This is my message", "Message title");

答案 1 :(得分:0)

有两种方法可以将自定义方法添加到Kendo UI小部件中:

  • Create a custom Kendo UI widget继承自(扩展)Kendo UI窗口。定义所需的自定义方法。但是,这种方法不能与Window的MVC包装器一起使用。
  • 覆盖客户端Kendo UI Window的原型。这应该在任何Window实例初始化之前发生。

    kendo.ui.Window.prototype.showMessage = function(message, title) {
        this.content("My message");
        this.title("My Title");
        this.center().open();
    
        var thisObj = this;
        setTimeout(function () {
            thisObj.close();
        }, 1400);
    }