Knockout.js 剔除viewModel属性
在尝试了几个小时的想法后,我就是无法让它发挥作用 简单需求:我有一个文本框(输入类型文本)和一个Div标记: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) {
<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()。