1

我们使用 KnockoutJS 来处理 UI 和 UI 中的移动部件。

所以这里是问题:

我们有网格,我们有过滤列。它过滤选项卡上的数据。最近我们收到了一个在 Enter 上过滤数据的请求。由于淘汰赛提供了自动触发我想要的操作的订阅方法。有没有办法让订阅方法的自定义实现可以在输入时触发。

var triggerQueryIfOk = function () {
    if (!self.isLoading() && !self.isOpening) self.runQuery();
};
self.filters.empName.subscribe(triggerQueryIfOk);
 };

self.getQueryParameters = function () {

    return {
       empName: self.filters.empName()                  };
};

self.runQuery = function () {

    if (!self.isLoading()) {

        self.isLoading(true);

        // prepare query data
        var query = self.getQueryParameters();

        // hit server
        $.ajax({
            url: self.getEmployeesUrl,
            type: "POST",
            data: JSON.stringify(query),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (rawInvestmentsData) {
                processEmployees(rawInvestmentsData);
                self.isLoading(false);
            },
            error: function () {
                self.isLoading(false);
            }
        });
    }

};
4

2 回答 2

1

什么是过滤列 - HTML 文本框?

如果是这样,您可以使用valueUpdate 绑定选项将文本框中的值推送到 observable 中:

<p>Your value: <input data-bind="value: someValue, valueUpdate: 'afterkeydown'" /></p>

名为“someValue”的 ko.observable 将在每次按下键后推送新值。

或者,您可以绑定 key down 事件并查找 enter 键:

<p>Your value: <input data-bind="value: someValue, event: { keydown: onKeyDown }" /></p>

...

viewModel.onKeyDown = function (sender, e) {
    if (e.keyCode === 13) { 
       // the enter key, do something here... 
    }
}
于 2012-02-13T19:16:07.273 回答
1

犹大的答案很接近,除了 onkeydown 方法应该是这样的(至少对我来说是这样):

self.OnSearchTermKeydown = function (me,event){
            if (event.keyCode === 13) { 
              location.href=searchURL + me.SearchValue;
              return false;
            }

              return true;
          };
于 2012-03-10T19:22:21.640 回答