【问题标题】:Can I call function outside viewmodel on knockout?我可以在淘汰赛中调用视图模型之外的函数吗?
【发布时间】:2018-11-22 00:00:19
【问题描述】:

假设我想在我的一个数据绑定上调用我的普通 javascript 函数。有可能这样做吗? 我试过了:-

<span data-bind = "click : outsideFn() ">hi</span>

<span data-bind=" click : function() { outsideFn() } ">hi</span?

显然,我的尝试没有成功。

http://jsfiddle.net/RcxVj/

编辑:- 在标签上添加 jsfiddle,因为这似乎是 jsfiddle 的问题。

【问题讨论】:

  • 你在 jsfiddle 之外尝试过这个吗?我稍微调整了一下,让它工作了。看起来只是脚本加载问题。jsfiddle
  • 我只在 jsfiddle 中尝试过,你说得对,它确实有效。将我的 javascript 代码放在 body 元素的末尾并在头部加载淘汰赛库就可以了。谢谢。

标签: javascript knockout.js jsfiddle


【解决方案1】:

是的,可以在数据绑定中调用普通的 javascript 函数。在您的项目中尝试它,它正在工作。 jsfiddle脚本可能有问题。

【讨论】:

  • 这就是导致我的脚本失败的原因。我在 jsfiddle 中尝试,而不是创建一个实际的文件。正如@bluetoft 提到的,淘汰赛必须在体内加载才能在 jsfiddle 中工作。感谢所有的帮助。
【解决方案2】:

是的,你可以。 请注意 click 绑定的 official Knockout documentation

您可以引用任何 JavaScript 函数 - 它不必是您的视图模型上的函数。您可以通过编写 click: someObject.someFunction 来引用任何对象上的函数。


工作示例:

https://jsbin.com/ciwofayegi/1/edit?html,css,js,output

HTML

&lt;span data-bind="text: txt, click: outsideFn"&gt;&lt;/span&gt;

Javascript

var outsideFn = function () {
    alert("outside function"); 
};

var vm = {
    "txt": ko.observable("some text")
};

ko.applyBindings(vm);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2014-01-25
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多