Knockout.js 剔除viewModel属性

Knockout.js 剔除viewModel属性,knockout.js,viewmodel,computed-observable,Knockout.js,Viewmodel,Computed Observable,在尝试了几个小时的想法后,我就是无法让它发挥作用 简单需求:我有一个文本框(输入类型文本)和一个Div标记: <body> <input id="tb" type="text"/> <div id="Words" data-bind="text: WordCount"></div> </body> 我使用的CountWords函数如下所示: function CountWords(inputString) {

在尝试了几个小时的想法后,我就是无法让它发挥作用

简单需求:我有一个文本框(输入类型文本)和一个Div标记:

<body>
    <input id="tb" type="text"/>
    <div id="Words" data-bind="text: WordCount"></div>
</body>
我使用的CountWords函数如下所示:

function CountWords(inputString) {

    var splitArray = inputString.split(" "), obj = {};

    for (var x = 0; x < splitArray.length; x++) {
        if (obj[splitArray[x]] === undefined) {
            obj[splitArray[x]] = 1;
        } else {
            obj[splitArray[x]]++;
        }
    }

    return splitArray.length;
}
函数CountWords(inputString){
var splitArray=inputString.split(“”),obj={};
对于(var x=0;x
上面的技术是我在另一篇SO文章中看到的解决方案——一种获取计算出的ko值以按需刷新/更新的方法。这个想法是从一个按键函数调用recalcWordCount。但问题是我的recalcWordCount函数在我的ViewModel对象中——而Knockout已经创建了该函数的一个实例。我不知道如何访问ko的ViewModel实例来调用函数。例如,这不起作用:

<input id="tb" type="text" onkeypress="recalcWordCount();" />
<input id="tb" type="text" onkeypress="ViewModel.recalcWordCount();" />
<input id="tb" type="text" onkeypress="ko.viewModel.recalcWordCount();" />

而且,这不起作用:

<input id="tb" type="text" onkeypress="recalcWordCount();" />
<input id="tb" type="text" onkeypress="ViewModel.recalcWordCount();" />
<input id="tb" type="text" onkeypress="ko.viewModel.recalcWordCount();" />

而且,这不起作用:

<input id="tb" type="text" onkeypress="recalcWordCount();" />
<input id="tb" type="text" onkeypress="ViewModel.recalcWordCount();" />
<input id="tb" type="text" onkeypress="ko.viewModel.recalcWordCount();" />


如果您能就如何使其工作提出任何建议,我将不胜感激。

您可以添加一个可观察的“过滤器”,并将其与如下输入绑定:

  <input data-bind="value: filter, valueUpdate: 'afterkeydown'" />

如果你创造了一把小提琴,我打赌有人能在几分钟内帮你解决问题。将来会使用小提琴——我刚学会小提琴,所以我不知道。哇,你让我的生活又多了好几个小时。非常感谢。对于那些想要实现上述功能的人,请确保在视图模型中添加一个过滤器变量:filter=ko.observable(“”);如果不这样做,您将得到一个JS错误,即未定义filter()。