与淘汰赛和视图模型

问题描述:

从来就存在的问题得到了在我的观点如下:与淘汰赛和视图模型

<div data-bind="dxTextBox: { onFocusIn: onEnterSearch, placeholder: 'suche...', showClearButton: true , value: ''}"></div> 
 
<div data-bind="dxButton: { onClick: 'SearchCustomer', text: 'suchen' }" style="width:100%;"></div></div>

,这在我的js文件:

function DoSearch() { alert('DoSearch');} 

function clearSearch() {     
     alert('clearSearch'); 
} 

var viewModel = { 
    //// Put the binding properties here 
    SearchCustomer: DoSearch, 
    onEnterSearch: clearSearch 
}; 

return viewModel; 

但是现在,当我关注文本框,我收到“clearSearch”警报,并点击按钮,我收到了一个404错误。

有没有人有想法?

由于 帕特里克

+2

A)你的代码片段不会产生任何东西。 B)如果你在这样的功能上出现404错误,它可能意味着表单正在提交。我对你正在使用的控件不熟悉,但我的猜测是,如果你检查你的html,你会在其中看到一个表单,而dxButton可能会创建一个提交按钮,导致表单被触发。如果您可以修改ko.customBindings,可以将按钮更改为非提交按钮。否则,将event.preventDefault和event.stopPropagation添加到doWork方法中,假设事件是您可以在参数中访问的内容。 – QBM5

根据本article

当定义一个插件,指定一个URL(字符串或对象),作为微件的事件处理程序(该URL分配给对应的选项或将其作为参数传递给on方法)。为了获得更好的UI设计,请使用点击小部件或小部件元素后触发的事件导航到视图。

因此,此事件处理程序onClick: 'SearchCustomer'将您导航到未定义的'SearchCustomer'视图。

如果你想使用viewModel.SearchCustomer法作为onClick事件处理程序,只需从绑定字符串中删除该帖符号:

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

看到这个fiddle,以及。

+0

就是这样!谢谢! – user2849380

+0

欢迎您! – Sergey