Knockout数据绑定功能

时间:2017-06-10 21:06:30

标签: javascript knockout.js data-binding

您好我尝试了一些但我不能这样做。

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>

没关系。这让我回归“你好世界”

但如果我用这个

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

它返回我这样的错误 - &gt; 错误:'未捕获的TypeError:this.my_var不是函数',

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

您需要使用bindviewModel明确.bind(this)到正确的上下文(即mytimer = setInterval(this.DataBind.bind(this), 1000); ){/ 1>}:

pytest-benchmark

请参阅MDN