【问题标题】:Knockout data-bind in function敲除数据绑定功能
【发布时间】:2017-06-10 21:06:29
【问题描述】:

您好,我尝试了一些方法,但我做不到。

HTML

<div data-bind="dxTextBox: { value:my_var }"></div>

JS

var viewModel = {
   my_var: ko.observable(''),
   StartScan:function()
    {
        mytimer = setInterval(this.DataBind, 1000);
    },
   DataBind:function()
    {
        this.my_var('hello world');
    },}return viewModel;

如果我用这个

<div data-bind="dxButton: { text: 'Start', onClick: DataBind}"></div>

没关系。这让我返回“hello world”

但是如果我用这个

<div data-bind="dxButton: { text: 'Start', onClick: StartScan}"></div>

它会像这样返回错误-> 错误:'未捕获的类型错误:this.my_var 不是函数',

我该如何解决这个问题?

【问题讨论】:

  • 你需要mytimer = setInterval(this.DataBind.bind(this), 1000);
  • @haim770 谢谢它的工作。你能把这个写成答案吗?所以我将此标记为解决方案。

标签: javascript knockout.js data-binding


【解决方案1】:

当您传递对稍后由setInterval(或setTimeout)调用的函数的引用时,其上下文将是全局范围(在本例中为window)。因此this.my_var 显然会返回undefined

您需要使用.bind(this)bind 明确地指向正确的上下文(即持有它的viewModel):

mytimer = setInterval(this.DataBind.bind(this), 1000);

MDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2018-11-24
    • 1970-01-01
    相关资源
    最近更新 更多