如何在javascript中执行敲除可观察任务

如何在javascript中执行敲除可观察任务,javascript,knockout.js,Javascript,Knockout.js,我已经用javascript和knockout.js开发了很多应用程序,但这次我太困惑了。 众所周知,敲除是在MVVM模式(即双绑定)上工作的。让我们举一个我困惑的例子: 我有一个viewModel: var myViewModel = { firstName: ko.observable('Bob'), lastName: ko.observable('dev') }; ko.applyBindings(new myViewModel()); 我已经将上面的viewMode

我已经用javascript和knockout.js开发了很多应用程序,但这次我太困惑了。 众所周知,敲除是在MVVM模式(即双绑定)上工作的。让我们举一个我困惑的例子: 我有一个viewModel:

var myViewModel = {
    firstName: ko.observable('Bob'),
    lastName: ko.observable('dev')
};

ko.applyBindings(new myViewModel());
我已经将上面的
viewModel
绑定到两个文本框中,如下所示:

<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>

<p>First name:</p><input type="text" data-bind="value: firstName" />
<p>Last name:</p><input type="text" data-bind="value: lastName " />
名字:

姓氏:

名字:

姓氏:

现在,这个示例可观察代码适用于我。当我从脚本或输入框中更改值时,它们将被绑定


现在我只想用基本的javascript完成同样的任务。我该怎么做?任何帮助都将不胜感激。

您可以使用javascript事件制作简单版本。您可以在输入上侦听
onchange
onkeyup
事件,并通过此事件的回调在其他位置更新值。如果您还希望javascript对象用于某种模型并对其进行更新,则可以创建自定义事件,并在模型中的属性更改时生成它们。

对象。观察
以获得胜利。它将包含在ECMA6标准中

演示代码片段-

//Datasource which you want to observe
var dataSource = {};

// Which we then observe
Object.observe(datasource, function(changes){

    // Async Callback
    newValue.forEach(function(change) {
        console.log(change.type, change.name, change.oldValue);
    });

});
这就是我们如何使用核心JavaScript观察任何属性/变量的方法


这里有一篇详细而漂亮的文章:

如何使用javascript更改值?myViewModel.firstName(“newvalue”)您是否在询问如何删除对knockout的依赖,并在vanilla javascript中执行所有这些操作?请查看此链接:查看knockout的源代码!说真的,没那么复杂。开始看可观察的包装器本身,它是非常直接的。将此与事件侦听器相结合,您已经走得很远了。然而,很快您将需要更多,并开始实施它。最终,你可能会发现使用淘汰是一个更好的方法,因为他们为你做的工作。他们测试它,他们得到反馈,他们很好地保持了淘汰赛的核心非常精益和平均。