【问题标题】:Dialog message on Blur using custom binding in Knockout Js在 Knockout Js 中使用自定义绑定进行模糊处理的对话框消息
【发布时间】:2015-06-04 18:22:35
【问题描述】:

我在 MVC 中有淘汰赛 js 的要求。

从输入数量的输入字段中跳出后,应显示一条对话框消息,其中包含一些来自模型的文本。

我是 knockoutjs 的 1 天婴儿。所以我不知道如何实现,

我想使用下面的代码来执行此操作。但我不确定我应该如何接管。我的观点应该是……控制器……!!!

ko.bindingHandlers.onFocusOut = {

    update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {

        $(element).blur(function () {

          //Add message here to display to user

        });

    }

}

以下示例接近我的要求,但是当我在更新时应用以下行时。它不工作:(

 $(element).blur(function () { alert("Triggered on Blur"); } 

Example

感谢您对此实施的支持。 Fiddler 的实现会很有帮助。

【问题讨论】:

  • 由于您要应用触发器,因此您需要在 init 部分而不是 update 部分执行。
  • @RoyJ,我想在用户失去控制焦点时触发模糊事件。
  • 这就是模糊触发器的工作原理:每次焦点离开控件时都会触发。您只需要设置一次,然后在 init 中进行设置。

标签: knockout.js knockout-2.0 knockout-mvc


【解决方案1】:

我不完全理解你的场景,但我理解你不需要自定义绑定,你可以使用event binding:

HTML:

<input data-bind="value: name, event: { blur: showMessage}" />

JavaScript:

var viewModel = {
    name: ko.observable("Bob"),
    showMessage: function(){
        alert('Hello ' + this.name());
    }
};

ko.applyBindings(viewModel);

每次更新输入字段中的值时,您都会收到更新值的警报。

这里是jsFiddle

【讨论】:

  • 感谢您的回复。该应用程序将是一个 ASP.Net MVC 应用程序。我将在对话框中显示的消息应该来自控制器。因此,当我从控件中选择(onBlur)时,应该显示来自控制器的对话框。从您的示例中,消息是从模型传递的。相反,它应该获取消息或名称 (this.name()) 作为输入参数并在对话框中显示。
  • @PremkumarJayaseelan 参数化函数很容易,只需执行function(msg) { alert('Hello' + ko.unwrap(msg)); }。将其封装到自定义绑定中同样容易(请参阅@RoyJ 对您的问题的评论)。现在我们唯一不知道的事情是:您的控制器在哪里/什么?它将如何调用该函数?请在您的问题中包含此内容
猜你喜欢
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多